Synchronized methods are methods that are used to control access to an
object.
A thread only executes a synchronized method after it has
acquired the lock for the method’s object or class. Synchronized
statements are similar to synchronized methods.
A synchronized statement
can only be executed after a thread has acquired the lock for the
object or class referenced in the synchronized statement.