JavaRush /Курсы /Java Core /join — ожидание завершения нити

join — ожидание завершения нити

Java Core
6 уровень , 4 лекция
Открыта

— Привет, Амиго! Я смотрю, ты делаешь большие успехи в изучении нитей.

— Это оказалось несложно.

— Это же отлично! Сегодня легкий урок, и тема этого урока – метод join.

Представь себе ситуацию: главная нить создала дочернюю нить для выполнения какого-то задания. Проходит время, и вот главной нити понадобились результаты работы той дочерней нити. А дочерняя нить еще не закончила свою работу. Что делать главной нити?

— Да, что делать главной нити?

— Для этого есть метод join. Смысл его в следующем. Одна нить ждет, пока полностью завершится работа второй нити:

Код Описание
class Printer implements Runnable
{
private String name;
public Printer(String name)
{
this.name = name;
}
public void run()
{
System.out.println("I’m " + this.name);
}
}
Класс, который реализует интерфейс Runnable.
public static void main(String[] args)
{
Printer printer1 = new Printer("Коля");
Thread thread1 = new Thread(printer1);
thread1.start();

thread1.join();
}
Главная нить создает дочернюю нить – объект thread1.

Затем запускает ее – вызов thread1.start();

И ждет ее завершения – thread1.join();

Одна нить может вызвать метод join у объекта второй нити. В результате первая нить (которая вызвала метод) приостанавливает свою работу до окончания работы второй нити (у объекта которой был вызван метод).

Тут стоит различать две вещи: есть, собственно, нить – отдельный процесс выполнения команд, а есть объект этой нити (объект Thread).

— И это все?

— Да.

— А зачем нужно создавать нить и сразу же ждать ее завершения?

— Сразу же может и не нужно. А вот спустя какое-то время это может и понадобится. Главная нить после запуска первой дочерней нити может раздать еще много заданий другим нитям (создав их и вызвав метод start), а потом все – работы ей больше не осталось, нужно обрабатывать результаты работы первой дочерней нити. В таких случаях, когда нужно обязательно дождаться завершения работы другой нити и нужно вызывать метод join.

— Понятно.

Комментарии (302)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Anonymous #3585174 Уровень 33
21 августа 2025
like
KPR500 Уровень 33
5 февраля 2025
--
Anton Shenberg Уровень 40
15 октября 2024
Дежавю... в 2013м проходил этот уровень до этого проработав около 7 лет на с++, перле и javascript с greasemonkey... Млин, какого хрена я тогда ушёл из программирования..... Сейчас в свои 44 по фану решил пройти javarush как квест, мозги совсем не те, что тогда, хоть и понятно всё более - менее, скорость "мышления - реакции" изменилась (
Aboba Уровень 29
9 ноября 2024
А почему ушли из программирования? Какие-то личные обстоятельства?
Anton Shenberg Уровень 40
9 ноября 2024
Сферу деятельности чуть изменить захотелось, а сейчас вернуться непросто, уровень текущей ЗП выше зарплаты джуна, не могу себе позволить просесть по деньгам ( но как хобби программировать интересно когда время есть
Aboba Уровень 29
9 ноября 2024
Если всё упирается в доход, то думаю прогать ради хобби самое то)
ВК Уровень 36
8 декабря 2024
И как ваши успехи? С таким бекграундом можно и фрилансить и для души, и для копеечки. наверное..
Anton Shenberg Уровень 40
9 декабря 2024
Все упирается во время ) Работа .... семья .... другие интересы .... мало времени на джаву остается, но не забрасываю
w5277c Уровень 32
16 декабря 2024
JavaRush вроде как не плохая площадка для хобби. Честно говоря засматриваюсь ни их курс по питону. У самого несколько хороших книг в оригинале, и немного практики на нем. Но без конкретных задач скучно и не интересно. Мозги не те, скорее всего не проблема, просто нужно освоиться. А вот сидеть по 10 часов в день без движения не у каждого здоровья хватит.
{Java_Shark} Уровень 36
11 октября 2024
надеюсь разберемся))++
mrnght Уровень 28
3 сентября 2024
много негатива под лекциями, но лично мне вполне нравится объяснение в формате диалога, да и примеры вроде вполне простые. Как кто-то мог уже на этом этапе перестать понимать? Может вам стоит заново по основам пройтись?
NordØne Уровень 34
16 июля 2024
рекомендую посмотреть ролики на ютубе на эту тему и попробовать самому придумать что-нибудь на тему многопоточности в IDE. Все встанет на свои места и не будет казаться чем-то сложным.
Бромгексин Уровень 38
8 июля 2024
почему в комментах пишут что то рода: it is impossible хотя все предельно просто
Бромгексин Уровень 38
9 июля 2024
ладно я заблуждался..
maxmaxmax Уровень 32
20 июля 2024
😁
JavaRusher853 Уровень 36
24 мая 2024
SomeBody098 Уровень 51
5 июня 2024
🤣🤣🤣
ORION_71 Уровень 41
18 мая 2024
По "join" хорошо разжевано тут join
SomeBody098 Уровень 51
5 июня 2024
спасибо за видео 👍
maxmaxmax Уровень 32
20 июля 2024
Заур вообще топ, всем его советую
Jump Java Уровень 39
22 июля 2024
Годное объяснение от Заура
Алексей Барищук Уровень 45 Expert
19 марта 2024
как хорошо был написан Java sintax и как убого Java core. Захочешь законспектировать, не сможешь
Егор Уровень 37
7 июня 2024
Да и в sintax много чего было непонятно. Часто приходилось гуглить.