Importance of join() Method in Java



The join() Method

In Java, a join() is a final method of the Thread class, and it can be used to join the start of a thread's execution to the end of another thread's execution so that a thread will not start running until another thread has ended.

If the join() method is called on a thread instance, the currently running thread will be blocked until the thread instance has finished its execution. The join() method in Java is important in multithreading because it allows one thread to wait for the completion of another thread before continuing execution.

Syntax

Following is the syntax of the join() method in Java -

public final void join() throws InterruptedException

Note: This method does not accept any parameters.

Example 1

The following program uses the join() method to ensure that the main thread waits for thread t1 to finish before starting threads t2 and t3 -

public class JoinTest extends Thread {
   public void run() {
      for(int i=1; i <= 3; i++) {
         try {
           Thread.sleep(1000);
        } catch(Exception e) {
           System.out.println(e);
        }
        System.out.println("TutorialsPoint "+ i);
      }
   }
public static void main(String args[]) {
   JoinTest t1 = new JoinTest();
   JoinTest t2 = new JoinTest();
   JoinTest t3 = new JoinTest();
   t1.start();
   try {
      t1.join(); // calling join() method
   } catch(Exception e) {
      System.out.println(e);
   }
      t2.start();
      t3.start();
   }
}

Following is the output of the above program -

TutorialsPoint 1
TutorialsPoint 2
TutorialsPoint 3
TutorialsPoint 1
TutorialsPoint 1
TutorialsPoint 2
TutorialsPoint 2
TutorialsPoint 3
TutorialsPoint 3

Example 2

The following is another example of using the join() method in "multithreading". This program creates "three" threads: t1, t2, and t3. Each thread prints its name and step number twice with a "0.5" (500) second delay. The t1 thread starts first, and t1.join() is used to make the main thread wait until t1 finished -

public class JoinTest extends Thread {
   public void run() {
      for (int i = 1; i <= 2; i++) {
         try {
            Thread.sleep(500);
         } catch (Exception e) {
            System.out.println(e);
         }
         System.out.println(Thread.currentThread().getName() + " -step " + i);
      }
   }
   public static void main(String args[]) {
      JoinTest t1 = new JoinTest();
      JoinTest t2 = new JoinTest();
      JoinTest t3 = new JoinTest();

      t1.setName("Thread-1");
      t2.setName("Thread-2");
      t3.setName("Thread-3");
      t1.start();
      try {
         t1.join(); // calling join() method
      } catch (Exception e) {
         System.out.println(e);
      }
      t2.start();
      t3.start();
   }
}

Following is the output of the above program -

Thread-1 -step 1
Thread-1 -step 2
Thread-2 -step 1
Thread-3 -step 1
Thread-2 -step 2
Thread-3 -step 2
Updated on: 2025-05-08T14:06:51+05:30

3K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements