Hi, welcome to the ranch!
Synchronization is used in multi-threaded programs to make sure that only one
thread gets into a sensitive code block at a time. If I have code that might be run by two threads and it does something as simple as:
it is possible for another thread to change the value of memberVariable between the time I set it and the time I
test it and the method might not print YES. If I make the method synchronized, the compiler adds code to guarantee that only one thread gets into this method at a time, and the method will always print YES.
This is a silly example, but real apps often have resources that are shared by many threads yet have to be modified by only one at a time.
See if
Thinking in Java or this
Sun Tutorial help you get into threading. The ranch has a forum just up the page all about threading if you want to take future questions there.