Here, you will learn how to construct a simple thread in java.
Thread Creation
In Java, an object of the Thread class can represent a thread. Thread can be implemented through any one of two ways:
- Extending the java.lang.Thread Class
- Implementing the java.lang.Runnable Interface
I.
Extending
the java.lang.Thread Class
For creating a thread a class have to extend the Thread Class. For creating a thread by this procedure you have to follow these steps:
- Extend the java.lang.Thread Class.
- Override the run( ) method in the subclass from the Thread class to define the code executed by the thread.
- Create an instance of this subclass. This subclass may call a Thread class constructor by subclass constructor.
- Invoke the start( ) method on the instance of the class to make the thread eligible for running.
The following program demonstrates a single thread creation extending the "Thread" Class:
class MyThread extends Thread{
|
C:\j2se6\thread>javac
RunThread.java C:\j2se6\thread>java RunThread Thread started.... |
II. Implementing the java.lang.Runnable Interface
The procedure for creating threads by implementing the Runnable Interface is as follows:
- A Class implements the Runnable Interface, override the run() method to define the code executed by thread. An object of this class is Runnable Object.
- Create an object of Thread Class by passing a Runnable object as argument.
- Invoke the start( ) method on the instance of the Thread class.
The following program demonstrates the thread creation implenting the Runnable interface:
class MyThread1 implements Runnable{
|
However, this program returns the output same as of the output generated through the previous program.
Output of the Program is:
C:\j2se6\thread>javac
RunableThread.java C:\j2se6\thread>java RunableThread Thread started.... |
There are two reasons for implementing a Runnable interface preferable to extending the Thread Class:
- If you extend the Thread Class, that means that subclass cannot extend any other Class, but if you implement Runnable interface then you can do this.
- The class implementing the Runnable interface can avoid the full overhead of Thread class which can be excessive.
join() & isAlive() methods:
The following
program demonstrates the join() & isAlive() methods:
class DemoAlive extends Thread {
|
Output of this program is:
C:\j2se6\thread>javac DemoJoin.java C:\j2se6\thread>java DemoJoin Wait for the child threads to finish. Thread a: 0 Thread b: 0 Thread a: 1 Thread b: 1 Thread a: 2 Thread b: 2 Thread a: 3 Thread b: 3 Thread a: 4 Thread b: 4 Exit from thread: Thread a Thread A not alive. Exit from thread: Thread b Thread B not alive. Exit from Main Thread. C:\j2se6\thread> |