What are threads?
A thread - sometimes called as an implementation context or a lightweight process - is a single sequential flow of control within a program. We use threads to separate tasks. While we run one of the applets it creates a thread that performs the operation. Every thread is a sequential flow of control within the same program (the browser). Every operation runs independently from the others but at the same time.
A thread is alike to the sequential programs described previously. A single thread as well has a beginning and a sequence and an end. At any given point of time during the runtime of the thread there is a single point of execution. Though, a thread itself isn't a program; a thread can't run on its own. Relatively it runs within a program.
A thread is the single sequential flow of control within a program. Threads perform two or more tasks at once. The real excitement surrounding threads isn't about a single sequential thread. Relatively, it is about the use of multiple threads running at the same time and performing different tasks in a single program.
A Web browser is an instance of a multithreaded application. Within a usual browser, you are able to scroll a page while it is downloading an image or an applet, play sound and animation concurrently and print a page in the background while you download a new page or watch three sorting algorithms race to the finish.
Some texts call a thread as a lightweight process. A thread is alike to a real process in that both have a single sequential flow of control. Though, a thread is considered as a lightweight for the reason that it runs within the context of a full-blown program and takes advantage of the resources allocated for that program and the program's environment.
The same as a sequential flow of control, a thread ought to carve out some of its own resources within a running program. For instance, a thread should have its own execution stack and program counter. The code running inside the thread works merely within that context. Some other texts use implementation context as a synonym for thread.
Result of calling the start method on a Thread object:
1. The thread goes into the Runnable position and the run method is invoked.
The two ways you are able to provide the implementation for a thread's run method:
1. Create a Thread subclass that dominates the run method.
2. Write a class that executes the Runnable interface and the run method