Hi, Raghuram, welcome to the ranch! That tutorial is definitely the place to go. Since you asked about synchronization (just one part of threading) I'll venture a very short explanation.
Often when two threads share a resource it is necessary to make sure only one
thread accesses it at a time. A resource can be any object or something outside the JVM. For example, a "race condition" is A Bad Thing that happens if I set a value on an object and some other thread changes it before I get around to using it. Synchronization is mostly about making the threads access something one at a time.
Note that in the tutorial synchronization is a ways down the page. You can do a lot of threading without having two threads share any resources so there's plenty to learn before synchronization.
Have fun! Ask more questions as you go!