 Thread
 Thread is
 also called as 
lightweight process.A 
thread
 is a single sequential flow of control within a program.
All programmers are familiar with writing sequential programs. You’ve
 probably written a program that displays “Hello World!”, or sorts a 
list of names, or computes a list of prime numbers. These are sequential
 programs: each has a beginning, an execution sequence, and an end. At 
any given time during the runtime of the program there is a single point
 of execution.
Threaded environments like Java allow a thread to put locks on shared
 resources so that while one thread is using data no other thread can 
touch that data. This is done with with synchronization. Synchronization
 should be used sparingly since the purpose of threading is defeated if 
the entire system gets stopped waiting for a lock to be released. The 
proper choice of objects and methods to synchronize is one of the more 
difficult things to learn about threaded programming.
Java applications and applets are naturally threaded. The runtime 
environment starts execution of the program with the 
main()
 method in one thread. Garbage collection takes place in another thread.
 Screen updating occurs in a third thread. There may be other threads 
running as well, mostly related to the behavior of the virtual machine. 
All of this happens invisibly to the programmer. Some of the time you’re
 only concerned with what happens in the primary thread which includes 
the 
main() method of a program. If this is the case you may  not need to worry about threading at all.