What Is a Thread?
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.
A thread is similar to the sequential programs described previously. A single
thread also has a beginning, a sequence, and an end and at any given time during
the runtime of the thread, there is a single point of execution. However, a thread
itself is not a program; it cannot run on its own. Rather, it runs within a program.
Thread: A thread is a single sequential flow of control within a program.
There is nothing new in the concept of a single thread. The real hoopla surrounding
threads is not about a single sequential thread. Rather, it's about the use of
multiple threads in a single program, running at the same time and performing
different tasks.
A Web browser is an example of a multithreaded application. Within
the browser you can scroll a page while it's downloading an applet or
image, play animation and sound concurrently, print a page in the background
while you download a new page, or watch three sorting algorithms race to the
finish. You are used to life operating in a concurrent fashion...so why not
your browser?
Some texts use the name lightweight process instead of thread. A thread is similar
to a real process in that a thread and a running program are both a single sequential
flow of control. However, a thread is considered lightweight because 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.
As a sequential flow of control, a thread must carve out some of its own resources
within a running program. It must have its own execution stack and program counter
for example. The code running within the thread works only within that context.
Thus, some other texts use execution context as a synonym for thread.