Перейти к контенту

Как организуется присоединение потоков в Java?

Класс java.lang.Thread предоставляет метод join(), который служит для следующих целей, используя его перегруженную версию.

  • join() — текущий поток вызывает этот метод во втором потоке, в результате чего текущий поток блокируется до завершения второго потока.
  • join(long millisec) — текущий поток вызывает этот метод во втором потоке, в результате чего текущий поток блокируется до тех пор, пока второй поток не завершится или не пройдет указанное количество миллисекунд.
  • join(long millisec, int nanos) — текущий поток вызывает этот метод во втором потоке, в результате чего текущий поток блокируется до тех пор, пока второй поток не завершится или не пройдет указанное число миллисекунд + наносекунд.

Смотрите пример ниже, демонстрирующий концепцию присоединения потоков в Java.

 

Пример

class CustomThread implements Runnable {  
   public void run() {
      System.out.println(Thread.currentThread().getName() + " started.");
      try {         
         Thread.sleep(500);         
      } catch (InterruptedException e) {
         System.out.println(Thread.currentThread().getName() + " interrupted.");
      }
      System.out.println(Thread.currentThread().getName() + " exited.");
   }   
}
public class Tester {
   public static void main(String args[]) throws InterruptedException {
      Thread t1 = new Thread( new CustomThread(), "Thread-1");
      t1.start();
      //main thread class the join on t1
      //and once t1 is finish then only t2 can start
      t1.join();
      Thread t2 = new Thread( new CustomThread(), "Thread-2");
      t2.start();
      //main thread class the join on t2
      //and once t2 is finish then only t3 can start
      t2.join();
      Thread t3 = new Thread( new CustomThread(), "Thread-3");
      t3.start();
   }   
}

Итог

Thread-1 started.
Thread-1 exited.
Thread-2 started.
Thread-2 exited.
Thread-3 started.
Thread-3 exited.

Оцени статью

Средняя оценка / 5. Количество голосов:

Спасибо, помогите другим - напишите комментарий, добавьте информации к статье.

Или поделись статьей

Видим, что вы не нашли ответ на свой вопрос.

Помогите улучшить статью.

 

Пока нет комментариев.

Добавить комментарий

Ваш e-mail не будет опубликован.

СайдбарКомментарии (0)