Creating a thread in Java

In Java, an object of the Thread class can represent a thread. Thread can be implemented through any one of two ways:
  1. Extending the java.lang.Thread Class
  2. Implementing the java.lang.Runnable Interface
Creating a thread in Java
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:
  1. Extend the java.lang.Thread Class.
  2. Override the run( ) method in the subclass from the Thread class to define the code executed by the thread.
  3. Create an instance of this subclass. This subclass may call a Thread class constructor by subclass constructor.
  4. Invoke the start( ) method on the instance of the class to make the thread eligible for running.
By extend the Thread class of java.lang package.
Syntax...........
class MyThread extends Thread
{
-----------------;
-----------------;
}
Override the run( ) Method-The run( ) method has to be Overridden by writing codes required for the thread. The thread behaves as per this code segment.
public void run()
{
----------------;
----------------;
}
Commonly used Constructors of Thread class:
Commonly used methods of Thread class:
Extending Thread class Example

This is a way to create a thread by a new class that extends Thread class and create an instance of that class. The extending class must override run() method which is the entry point of new thread.
class MyThread extends Thread
{
   public void run()
   {
     System.out.println("Concurrent thread started running..");
   }
}

class MyThreadDemo
{
   public static void main( String args[] )
   {
     MyThread mt = new  MyThread();
     mt.start();
   }
}
In this case also, as we must override the run() and then use the start() method to start and run the thread. Also, when you create MyThread class object, Thread class constructor will also be invoked, as it is the super class, hence MyThread class object acts as Thread class object.
output:
Creating a threads in Java
What if we call run() method directly without using start() method ?
In above program if we directly call run() method, without using start() method,
public static void main( String args[] )
{
   MyThread mt = new MyThread();
   mt.run();
}
Doing so, the thread won't be allocated a new call stack, and it will start running in the current call stack, that is the call stack of the main thread. Hence Multithreading won't be there.
thread-without-new-call-stack
Can we Start a thread twice ?
No, a thread cannot be started twice. If you try to do so, IllegalThreadStateException will be thrown.
public static void main( String args[] )
{
   MyThread mt = new MyThread();
   mt.start();
   mt.start();     //Exception thrown
}
When a thread is in running state, and you try to start it again, or any method try to invoke that thread again using start() method, exception is thrown.

Implementing the Runnable Interface:
The easiest way to create a thread is to create a class that implements the runnable interface. After implementing runnable interface , the class needs to implement the run() method, which is of form,
public void run()
class MyThread implements Runnable
{
   public void run()
   {
     System.out.println("concurrent thread started running..");
   }
}

class MyThreadDemo
{
    public static void main( String args[] )
    {
      MyThread mt = new MyThread();
      Thread t = new Thread(mt);
      t.start();
   }
}
To call the run() method, start() method is used. On calling start(), a new stack is provided to the thread and run() method is called to introduce the new thread into the program.

threads



<<Previous <<   || Index ||   >>Next >>


Labels: