Java Thread.join() Examples to Wait for Another Thread


A quick guide to Thread.join() method in java with example. join() method Waits for this thread to die. This is mainly used to make the current thread to wait until another thread completes its execution.

1. Introduction

In this tutorial, We'll learn how to use Thread.join() method in java. And also how to join the multiple threads at one place after completing the execution of all threads or one thread or any other threads.

join() method is part of the Thread class and it is part of the java.lang package. All the classes in java.lang package is not needed to add import statements. So, directly you can use it in the programs. join() is mainly used to sleep or wait the current thread until completion of another thread execution.

Similar to the wait() and notify(), join() also widely used in the thread intercommunication.

2. Thread.join() Syntax

below is the syntax from Thread API. join() method is an overloaded method so we should be careful which method should be used.

public final void join() throws InterruptedException

public final void join(long millis) throws InterruptedException

public final void join(long millis, int nanos) throws InterruptedException

Java 8 String API also has join() method.

3. Thread.join() Example To Wait For Another Thread Execution Completion

When a Thread.join() method is invoked then the current thread will go into the waiting state. Once invoked thread completes it's execution then-current thread comes from out of waiting state.

For example. we have 3 threads such as t1, t2, t3. All will be created and called start() from main method. So, here the main() method creates the main thread. Now, our goal is to execute first t1, next t2, and last t3.

We can use join() method to wait main thread untill completion of the t1 thread execution. After that start t2 thread and next start t3 thread.

See the below example program that tries to print numbers by each thread as below.

thread 1 print from 1 to 10
thread 2 print from 11 to 20
thread 3 print from 21 to 30

package com.javaprogramto.threads;

public class ThreadJoinExample {

 public static void main(String[] args) throws InterruptedException {
  System.out.println("main thread started execution. Current thread name : " + Thread.currentThread().getName());
  PrintNumbers t1 = new PrintNumbers(1, 10);
  PrintNumbers t2 = new PrintNumbers(11, 20);
  PrintNumbers t3 = new PrintNumbers(21, 30);




  System.out.println("All threads completed excution.");
  System.out.println(Thread.currentThread().getName() + " complete execution");


class PrintNumbers extends Thread {

 private int start;
 private int end;

 public PrintNumbers(int start, int end) {
  this.start = start;
  this.end = end;

 public void run() {
  for (int i = start; i <= end; i++) {
   System.out.println(Thread.currentThread().getName() + " - " + i);
  System.out.println(Thread.currentThread().getName() + " thread execution completed.");


main thread started execution. Current thread name : main
Thread-0 - 1
Thread-0 - 2
Thread-0 - 3
Thread-0 - 4
Thread-0 - 5
Thread-0 - 6
Thread-0 - 7
Thread-0 - 8
Thread-0 - 9
Thread-0 - 10
Thread-0 thread execution completed.
Thread-1 - 11
Thread-1 - 12
Thread-1 - 13
Thread-1 - 14
Thread-1 - 15
Thread-1 - 16
Thread-1 - 17
Thread-1 - 18
Thread-1 - 19
Thread-1 - 20
Thread-1 thread execution completed.
Thread-2 - 21
Thread-2 - 22
Thread-2 - 23
Thread-2 - 24
Thread-2 - 25
Thread-2 - 26
Thread-2 - 27
Thread-2 - 28
Thread-2 - 29
Thread-2 - 30
Thread-2 thread execution completed.
All threads completed excution.
main complete execution


1. If the thread is interrupted then join() method may also return from the waiting state and throws an interrupted exception. But this happens in a rare case.

2. If the thread is not started and if we call join() method that does not make the main thread to wait. because the thread is not started so it will not wait and go to the next statement execution t2.start().




4. Thread.join(long) with timeout in milliseconds

This is also the most used method in some scenarios. If the main thread is calling t2.join() and the main thread is waiting to finish t2 execution. But, thread t2 execution takes more time than expected. So, we can specify the time x in milliseconds to join the method so that the main thread will wait for x seconds and then come out from the waiting state.


public final void join(long millis) throws InterruptedException

join(long timeout) Example:




5. Conclusion

In this article, We've seen how to use Thread.join() method with examples.


Thread join() Examples



About Us

Author: Venkatesh - I love to learn and share the technical stuff.

accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,18,Arrays,24,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,8,Collections,37,Collector,1,Command Line,1,Comparator,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,149,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,38,Dictionary,1,Difference,2,Download,1,Eclipse,3,Efficiently,1,Error,1,Errors,1,Exceptions,8,Fast,1,Files,17,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,9,Grant,1,Grep,1,HashMap,2,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,6,Iterate,2,Jackson API,3,Java,32,Java 10,1,Java 11,6,Java 12,5,Java 13,2,Java 14,2,Java 8,128,Java 8 Difference,2,Java 8 Stream Conversions,4,java 8 Stream Examples,12,Java 9,1,Java Conversions,14,Java Design Patterns,1,Java Files,1,Java Program,3,Java Programs,114,Java Spark,1,java.lang,4,java.util. function,1,JavaScript,1,jQuery,1,Kotlin,11,Kotlin Conversions,6,Kotlin Programs,10,Lambda,2,lang,29,Leap Year,1,live updates,1,LocalDate,1,Logging,1,Mac OS,3,Math,1,Matrix,6,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,2,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,31,String,61,String Programs,28,String Revese,1,StringBuilder,1,Swing,1,System,1,Tags,1,Threads,11,Tomcat,1,Tomcat 8,1,Troubleshoot,26,Unix,3,Updates,3,util,5,While Loop,1,
JavaProgramTo.com: Java Thread.join() Examples to Wait for Another Thread
Java Thread.join() Examples to Wait for Another Thread
A quick guide to Thread.join() method in java with example. join() method Waits for this thread to die. This is mainly used to make the current thread to wait until another thread completes its execution.
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content