Sobes.tech
Назад к вопросам
Junior — Middle
67

Какова роль метода join() в классе Thread и зачем он используется в многопоточном программировании?

Компании, где спрашивали
Firecode

Ответ от нейросети

sobes.tech AI

Метод join() в классе Thread используется для того, чтобы текущий поток ожидал завершения другого потока, на котором вызван этот метод. Это позволяет синхронизировать выполнение потоков: основной поток может приостановиться и дождаться, пока дочерний поток выполнит свою задачу.

Например, если у вас есть поток, который выполняет длительную операцию, и вы хотите, чтобы основной поток продолжил работу только после её завершения, вызываете join() на этом потоке.

Пример:

Thread t = new Thread(() -> {
    // Долгая операция
    System.out.println("Поток начал работу");
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println("Поток завершил работу");
});
t.start();

try {
    t.join(); // Ждем завершения потока t
} catch (InterruptedException e) {
    e.printStackTrace();
}
System.out.println("Основной поток продолжил работу после завершения t");

Таким образом, join() помогает избежать проблем с несогласованностью данных и обеспечивает правильный порядок выполнения в многопоточном приложении.