Metoda join() w klasie Thread w języku Java odgrywa kluczową rolę w zarządzaniu wielowątkowością. Pozwala ona na oczekiwanie w bieżącym wątku na zakończenie wykonania innego wątku. Dzięki temu programista ma kontrolę nad kolejnością wykonywania wątków, co jest szczególnie przydatne w sytuacjach, gdzie wymagane jest, aby pewne operacje zostały ukończone przed innymi.
Przykład użycia metody join()
Poniżej znajduje się kompleksowy przykład, w którym tworzone są dwa wątki. Główny wątek programu czeka na ich zakończenie przed wyświetleniem komunikatu końcowego.
// Klasa rozszerzająca Thread
class MyThread extends Thread {
private String threadName; // Nazwa wątku
// Konstruktor z nazwą wątku
MyThread(String name) {
this.threadName = name; // Inicjalizacja nazwy wątku
}
// Metoda uruchamiająca działanie wątku
public void run() {
try {
for (int i = 0; i < 5; i++) {
// Symulacja czasochłonnej operacji
Thread.sleep(400);
// Wyświetlanie informacji o działaniu
System.out.println(threadName + " jest uruchomiony: " + i);
}
} catch (InterruptedException e) {
// Obsługa przerwania wątku
System.out.println(threadName + " został przerwany.");
}
// Komunikat o zakończeniu wątku
System.out.println(threadName + " zakończył działanie.");
}
}
public class Main {
public static void main(String[] args) {
// Tworzenie wątków
MyThread thread1 = new MyThread("Wątek 1");
MyThread thread2 = new MyThread("Wątek 2");
// Uruchomienie wątków
thread1.start();
thread2.start();
try {
// Oczekiwanie na zakończenie wątków
thread1.join(); // Oczekiwanie na wątek 1
thread2.join(); // Oczekiwanie na wątek 2
} catch (InterruptedException e) {
// Obsługa wyjątku przerwania
System.out.println("Główny wątek został przerwany.");
}
// Komunikat po zakończeniu wszystkich wątków
System.out.println("Wszystkie wątki zakończyły działanie.");
}
}
Podsumowanie
Metoda join() jest niezwykle przydatna w zarządzaniu zależnościami między wątkami w aplikacji wielowątkowej. Umożliwia synchronizację wątków poprzez zapewnienie, że wątek, na którym została wywołana metoda join(), zostanie zatrzymany do czasu zakończenia wątku, którego dotyczy join(). Jest to kluczowe dla zapewnienia, że określone sekwencje zadań zostaną przetworzone w odpowiedniej kolejności.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

