РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
997 of 1163 menu

Метод join

Метод join класса Thread заставляет текущий поток приостановить выполнение и ждать, пока поток, у которого вызван этот метод, не завершится. Метод может принимать необязательный параметр - время ожидания в миллисекундах. Если поток не завершится за указанное время, управление вернётся текущему потоку.

Синтаксис

thread.join() thread.join(millis) thread.join(millis, nanos)

Пример

Давайте создадим поток, который выводит числа от 1 до 5, и дождёмся его завершения с помощью join:

public class Main { public static void main(String[] args) { Thread thread = new Thread(() -> { for (int i = 1; i <= 5; i++) { System.out.println(i); } }); thread.start(); try { thread.join(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Thread finished"); } }

Результат выполнения кода:

1 2 3 4 5 "Thread finished"

Пример

Давайте зададим максимальное время ожидания потока в 100 миллисекунд. Если поток не завершится за это время, главный поток продолжит работу:

public class Main { public static void main(String[] args) { Thread thread = new Thread(() -> { try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Thread finished"); }); thread.start(); try { thread.join(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Main finished"); } }

Результат выполнения кода:

"Main finished" "Thread finished"

Пример

Давайте дождёмся завершения нескольких потоков, вызывая join для каждого из них:

public class Main { public static void main(String[] args) { Thread first = new Thread(() -> { System.out.println("First thread"); }); Thread second = new Thread(() -> { System.out.println("Second thread"); }); first.start(); second.start(); try { first.join(); second.join(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("All threads finished"); } }

Результат выполнения кода:

"First thread" "Second thread" "All threads finished"

Смотрите также

  • метод start,
    который запускает поток
  • метод sleep,
    который приостанавливает поток
  • метод isAlive,
    который проверяет, жив ли поток
  • метод interrupt,
    который прерывает поток
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить