Multi Threading
Multi Threading
Java provides built-in support for multithreaded programming. A multithreaded program contains
two or more parts that can run concurrently. Each part of such a program is called a thread, and each
thread defines a separate path of execution. Thus, multithreading is a specialized form of
multitasking.
There are two distinct types of multitasking: process-based and thread-based.
A process is a program that is executing. Thus, process-based multitasking is the feature that allows
your computer to run two or more programs concurrently. For example, process-based multitasking
enables you to run the Java compiler at the same time that you are using a text editor. In process-
based multitasking, a program is the smallest unit of code that can be dispatched by the scheduler.
In a thread-based multitasking environment, the thread is the smallest unit of dispatchable code.
This means that a single program can perform two or more tasks simultaneously. For instance, a text
editor can format text at the same time that it is printing, as long as these two actions are being
performed by two separate threads.
Multitasking threads require less overhead than multitasking processes. Processes are heavyweight
tasks that require their own separate address spaces. Inter-process communication is expensive and
limited. Context switching from one process to another is also costly. Threads, on the other hand, are
lightweight. They share the same address space and cooperatively share the same heavyweight
process. Interthread communication is inexpensive, and context switching from one thread to the
next is low cost.
Multithreading enables you to write very efficient programs that make maximum use of the CPU,
because idle time can be kept to a minimum.