Of course the optimal objective value should not depend on the number of threads.
Is the MIP gap reported in the log 0.00% or did you set CPX_PARAM_EPGAP to 0? What is the solution status in both cases? Unless you set CPX_PARAM_EPGAP to 0, the gap may be so small that it shows as 0.00% in the log but is still larger than zero. Make sure that the solution status is CPXMIP_OPTIMAL (101) (or Optimal in the object oriented APIs, respectively) in both cases before comparing things.
#CPLEXOptimizers#DecisionOptimization