Java Inline Thread Creation

In Java, a thread that is created with an anonymous inner class or by using lambda expression is called an inline thread.

Anonymous thread object means a thread that is created without extending from Thread class or implementing from Thread class or implementing from the Runnable interface explicitly is called “anonymous” thread object. The other name for the anonymous thread object is “inline” thread.

Using an anonymous inner class we can create Thread without extending from Thread class or implementing from Runnable interface explicitly.


Inline thread creation using Thread class

Syntax to create an inline thread using Thread class,

new Thread(){
  public void run(){
    //code.....
  }
}.start();

Creating inline thread using Thread class

 //Inline Thread using Thread class
 class CustomThread{
   public static void main(String[] args) {
     System.out.println("main thread execution started");
     
     new Thread() {
       public void run(){
         for(int i=1; i<=5; i++){
           System.out.println("run: "+i);
         }
       }
     }.start();
     
     System.out.println("main thread execution completed");
   }
 }

Output:-
main thread execution started
main thread execution completed
run: 1
run: 2
run: 3
run: 4
run: 5

One custom thread is created and the run() method is exected from the anonymous inner class. Along with the main thread, the inline thread is executed concurrently.


Inline thread creation using Runnable interface

Syntax to create an inline thread using Runnable interface,

new Thread(
  new Runnable(){
    public void run(){
      //code....
    }
  }
).start();

Inline thread creation using Runnable interface

 class InlineThread_Runnable{
   public static void main(String[] args) {
     System.out.println("main thread execution started");
     System.out.println("Inline thread creation using Runnable interface");
     
     new Thread(
       new Runnable(){
         public void run(){
           System.out.println("Inline thread execution started");
           for(int i=0; i<=1; i++){
             System.out.println("run :"+i);
           }
           try{Thread.currentThread().sleep(200);}
           catch(InterruptedException e){}
           System.out.println("Inline thread execution completed");
         }
       }
     ).start();
     
     try{Thread.currentThread().sleep(100);}
     catch(InterruptedException e){}
     System.out.println("main thread execution completed");
   }
 } 

Output:-
main thread execution started
Inline thread creation using Runnable interface
Inline thread execution started
run: 0
run: 1
main thread execution completed
Inline thread execution completed


Inline thread creation using Lambda expression

Lambda expression syntax for inline thread from the Runnable interface,

new Thread( ()-> /* code..*/).start();

Inline thread creation using Lambda expression

 class InlineThread_Runnable{
   public static void main(String[] args) {
     System.out.println("main thread execution started");

     new Thread(
       ()-> System.out.println("Inline thread")
       //Only one statement so semicolon isn't required.
     ).start();

     System.out.println("main thread execution completed");
   }
 } 

Output:-
main thread execution started
main thread execution completed
Inline thread

When we should use inline thread?
If we want to thread representation (some implementation) only one time not repeatedly then we should use inline thread. But if we want to use implementation repeatedly with the concurrent flow of execution then instead of using inline thread, we should create thread objects by using Thread class or through Runnable interface.

Note:- Inline thread is not the “official” Java term. It is invented by textbook authors or software industry experts.

Useful links:-

Please write comments if you find anything incorrect in this discussed topic, or you want to share more information about the topic discussed above.

Also see:- Develop Java Program Without Using User-defined Class

Leave a Reply