What are synchronized methods and synchronized statements?
Synchronized methods are methods that are used to control access to an object. A thread only implements a synchronized method after it has acquired the lock for the method's object or class.
Synchronized statements are same to synchronized methods. A synchronized statement can only be implemented after a thread has acquired the lock for the object or class referenced in the synchronized statement.