Java Thread Model:
The Java a run time system depends on threads for several things, and all the class libraries are designed along with multithreading in mind. Actually, Java uses threads to enable the whole environment to be asynchronous. This helps decrease inefficiency through avoiding the waste of CPU cycles.
The value of a multithreaded environment is best understood in constrict to its counterpart. A Single threaded system used an approach known as an event loop with polling. Within this models a single thread of control run in an infinite loop, polling a single event queue to decide what to do next. At one time this polling mechanism returns along with, say a signal in which a network file is ready to be read, after that the event loop dispatches control to the appropriate event handler. Until this event handler returns, nothing else could happen in the system. This wastes CPU time. It could also result in one part of a program common, in a singled threaded environment, whenever a thread blocks (which is, suspends execution) since it is waiting for a few resource, the whole program stops running.
The advantages of Java's multithreading are in which the main loop/polling mechanism is eliminated. One thread can pause without stopping other category of your program. For instance, the idle time created whenever a thread reads data from a network or waits for user input could be utilized elsewhere. A Multithreading permits animation loops to sleep for a second among each frame without causing the overall system to pause. When a thread blocks in a Java program, only the single thread which is blocked pauses. Rather other threads continue to run.