When you expect that your shared code will be accessed by different threads and these threads may change a particular data causing data corruption or methods misbehave, then they are placed in a synchronized construct or a synchronized method.
Read More →