Here is the answer.
Synchronization is best use with the Multi-Threading in Java, Synchronization is the capability to control the access of multiple threads to share resources. Without synchronization it is possible for one thread to modify a shared object while another thread is in the process of using or updating that object's value.This often leads to an error.
A thread is a distinct flow of program logic that can be executed at the same time as other threads. This make it seem like two things are running simultaneously (kind of like how word spell checks as you type).Occasionally you might need one thread to wait until another thread gets to the same point.
An example might be if you had a program, and a fancy user interface that required animation. You might pause the logic part of your program and wait until the animation finished before the threads continue on. This is synchronization.