Will there be overhead? Yes.
Will there be a lot of overhead? It depends.
If there is only one thread, then the answer is "No", even in these ancient times , conflict-free synchronization was fast, presumably they have improved it since then.
So what happens if there are more than 1 thread? Well here is the problem: 2 versions you published are not functionally equivalent. What for? Because the subtopics you invoke are public methods of the open class. Therefore, they can be called outside of your setClassTwo and therefore do not have synchronization.
Another thing is that they are synchronized on different monitors. The second version is synchronized only on 1 monitor, and the original on two.
TL DR
Leave synchronized in the methods you need to synchronize, do not just expect the caller to synchronize (if it is not built into the class API). If the calling methods do the correct synchronization, there will be no competition, and the overhead will be very small, and if they do not do it in any way (for example, someone will call your method directly), then you will get competition and big overhead - but you still have thread safety.
source share