Метод join в Java
Last updated: 6 мая 2025 г.Метод join
останавливает поток в котором этот метод был вызван пока не закончит выполнение поток к которому этот метод был вызван.
Более понятно на примере:
1import java.io.*;
2
3class ThreadJoining extends Thread {
4 @Override
5 public void run(){
6 for (int i = 0; i < 2; i++){
7 try{
8 Thread.sleep(500);
9 System.out.println("Current Thread: "
10 + Thread.currentThread().getName());
11 }
12 catch(Exception e){
13 System.out.println("Exception has been caught"+e);
14 }
15 System.out.println(i);
16 }
17 }
18}
19
20class JoinExample {
21 public static void main (String[] args){
22 ThreadJoining t1 = new ThreadJoining();
23 ThreadJoining t2 = new ThreadJoining();
24 ThreadJoining t3 = new ThreadJoining();
25 t1.start();
26 try{
27 System.out.println("Current Thread: "
28 + Thread.currentThread().getName());
29 //ниже join вызван в потоке мейн к потоку t1
30 t1.join();//приостанавливает текущий поток
31 //(в данном случае поток в котором выполняется мейн)
32 //пока не выполниться t1
33 }
34 catch(Exception e){
35 System.out.println("Exception has been caught" + e);
36 }
37 t2.start();
38 try{
39 System.out.println("Current Thread: "
40 + Thread.currentThread().getName());
41 //Опять таки останавливаем мейн
42 //пока не выполниться t2.
43 t2.join();
44 }
45 catch(Exception e){
46 System.out.println("Exception has been caught" + e);
47 }
48 t3.start();
49 try{
50 System.out.println("Current Thread: "
51 + Thread.currentThread().getName());
52 //Опять таки останавливаем мейн
53 //пока не выполниться t3.
54 t3.join();
55 }
56 catch(Exception e){
57 System.out.println("Exception has been caught" + e);
58 }
59 }
60}
Вывод:

В консоли видно, что мейн останавливался, давая по очереди полностью выполниться потокам.
Следующие уроки
Синхронизация в Java с помощью Synchronized
13
мин.
Synchronized static в Java
15
мин.
Синхронизация с помощью Wait/Notify
9
мин.