Java Static Synchronization

This method is used to achieve static synchronization which locks a class, not an object.

Why use static synchronization?

Consider a shared class ‘Numbers’ for two objects (obj1 and obj2). Use of synchronized method and synchronized block cannot interfere between the objects created(th1 and th2 or th3 and th4) for shared class because the lock was on the object. But interfere may occur between th1 and th3 or th2 or th4 because of the class lock, th1 contain another class and th3 contain another class.
So to solve this interference we use Static Synchronization.

Example to demonstrate the use of static synchronization:

Output