Java – Defining a Thread by Implementing Runnable Interface | Code Factory


Index Page : Link

Donate : Link

Medium Link : Link

Applications : Link

              Runnable                           Runnable    
                 ↑                                  ↑      
              Thread                           MyRunnable              
                 ↑                                        
              MyThread                                           
  • Runnable interface present in java.lang package and it contain only one method run()
package com.example.thread;

public class ThreadTest {
	public static void main(String... args) {
		MyRunnable r = new MyRunnable(); // Thread instantiation
		Thread t = new Thread(r); // r = target Runnable
		t.start(); // starting a Thread
		// executed by Main Thread (line no. 9 to 11)
		for(int i=0; i<5; i++) {
			System.out.println("Main Thread");
		}
	}
}

// Define a Thread (line no. 16 to 23)
class MyRunnable implements Runnable {
	public void run() {
		// job of Thread, executed by Child Thread (line no. 19 to 21)
		for(int i=0; i<5; i++) {
			System.out.println("Child Thread");
		}
	}
}

Output :

Main Thread
Main Thread
Main Thread
Main Thread
Main Thread
Child Thread
Child Thread
Child Thread
Child Thread
Child Thread

. . . . .

Case Study :

MyRunnable r = new MyRunnable();
Thread t1 = new Thread();
Thread t2 = new Thread(r);

Case 1 : t1.start()

  • A new thread will be created which is responsible for the execution of Thread class run() method which has empty implementation

Case 2 : t1.run()

  • No new thread will be created and Thread class run() method will be executed just like a normal method call

Case 3 : t2.start()

  • A new thread will be created which is responsible for the execution of MyRunnable class run method

Case 4 : t2.run()

  • A new thread wouldn’t be created and MyRunnable run() method will be executed just like a normal method call

Case 5 : r.start()

  • We will get compile time error saying MyRunnable class doesn’t have start capability
  • CE : cannot find symbol
  • symbol : method start()
  • location : MyRunnable

Case 6 : r.run()

  • No new thread will be created and MyRunnable run() method will be executed like normal method call

. . . . .

  • Among 2 ways of defining a Thread implement runnable approach is recommended.
  • In the 1st approach our class always extends Thread class, there is no chance of extending any other class. Hence we are missing inheritance benefits.
  • But in the 2nd approach while implementing runnable interface we can extend any other class. Hence we wouldn’t missing any inheriance benefit.
  • Because of above reason implementing Runnable interface approach is recommended than extending Thread class.

. . . . .

Thread Class Constructors :

  1. Thread t = new Thread();
  2. Thread t = new Thread(Runnable r);
  3. Thread t = new Thread(String name);
  4. Thread t = new Thread(Runnable r, String name);
  5. Thread t = new Thread(ThreadGroup g, String name);
  6. Thread t = new Thread(ThreadGroup g, Runnable r);
  7. Thread t = new Thread(ThreadGroup g, Runnable r, String name);
  8. Thread t = new Thread(ThreadGroup g, Runnable r, String name, long stacksize);

6 thoughts on “Java – Defining a Thread by Implementing Runnable Interface | Code Factory”

  1. An attention-grabbing discussion is price comment. I believe that you should write extra on this topic, it may not be a taboo topic but typically persons are not sufficient to talk on such topics. To the next. Cheers

    Liked by 1 person

Leave a reply to Code Factory Cancel reply