The idea of multiple threads of control within a single program may seem like a new and difficult concept, but it is not. All programs have at least one thread already, and multiple threads in a single program are not radically different from multiple programs within an operating system.
A Java program can contain many threads, all of which may be created
without the explicit knowledge of the developer. For now, all you
need to consider is that when you write a Java application, there is
an initial thread that begins its operation by executing the
main()
method of your application. When you
write a Java applet, there is a thread that is executing the callback
methods (init()
,
actionPerformed()
, etc.) of your applet; we speak
of this thread as the applet’s thread. In either case, your
program starts with what you can consider as a single thread. If you
want to perform I/O (particularly if the I/O might block), start a
timer, or do any other task in parallel with the initial thread, you
must start a new thread to perform that task. In the next chapter,
we’ll examine how to do just that.