Топ-100Метод join в Java - CodOrbits
LogoCodOrbits

Раздел: Многопоточность

В этом разделе вы узнаете, как использовать многопоточность в Java для повышения производительности и параллельной обработки.

Все разделы
Иконка Многопоточность

Метод 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
мин.

Similar Articles Icon
Divider

Synchronized static в Java

15
мин.

Similar Articles Icon
Divider

Синхронизация с помощью Wait/Notify

9
мин.

Similar Articles Icon