Lesson 3 | Defining, instantiating, and starting threads |
Objective | Explain the two approaches to defining, creating, and starting threads. |
Two approaches to defining, instantiating, starting Threads
Java provides two ways to create threads:
- Extend the
java.lang.Thread
class
- Define a class that implements the
java.lang.Runnable
interface
Extending the Thread Class
When
extending the Thread class,
your class inherits the properties and methods of the
Thread
class. You override the
run()
method of the
Thread
class to implement the thread's
entry point.
This entry point is the code that is executed when the thread is executed as a separate sequence of instructions.
class MyThread extends Thread {
public MyThread() { // Thread constructor
. . .
}
public void run() { // Thread entry point
. . .
}
}
MyThread threadInstance = new MyThread();
In the "Implementing Runnable" section:
class MyThread implements Runnable {
public MyThread() { // Thread constructor
. . .
}
public void run() { // Thread entry point
. . .
}
}
Click the link below to read about the different types of thread constructors.
Overload Thread Constructors
MyThread threadInstance = new MyThread();
Thread t = new Thread(threadInstance);
You create an instance of the thread using:
MyThread threadInstance = new MyThread();
You start the thread by invoking its start()
method:
threadInstance.start();
When you start a thread, you cause it to be executed as a separate sequence of instructions.
This results in the thread's run()
method being invoked by the JVM.
Implementing runnable
The
Runnable
interface consists of a single method:
run()
.
When
implementing Runnable this method is the thread's entry point.
A thread class that implements
Runnable
has the following structure:
class MyThread implements Runnable {
public MyThread() { // Thread constructor
. . .
}
public void run() { // Thread entry point
. . .
}
}
You create an instance of the thread using:
MyThread threadInstance = new MyThread();
To start the thread, you construct a Thread object and then invoke the start() method of the Thread object:
Thread t = new Thread(threadInstance);
t.start();
The advantage of creating a thread by implementing
Runnable
is that your class can appear anywhere in the class hierarchy. The disadvantage is that it requires slightly more work.
Using Threads - Exercise
Click the exercise link below to practice defining, creating, and starting threads using both the
Thread
class and implementing the
Runnable
interface.
Using Threads - Exercise