Grupy wątków w Javie (ang. Thread Groups) są mechanizmem, który pozwala na zarządzanie grupami wątków jako jedną całością. Umożliwiają one organizację wątków w logicznie powiązane grupy, co pozwala na łatwiejszą kontrolę nad ich życiem i działaniem. W tej lekcji przeanalizujemy, jak można używać grup wątków w praktycznym przykładzie.
Przykład użycia grup wątków w Java
Poniższy przykład ilustruje, jak tworzyć grupy wątków i zarządzać nimi w Javie. Przedstawiony kod skupia się na tworzeniu grupy wątków, dodawaniu wątków do grupy i zarządzaniu ich stanem.
// Klasa główna z metodą main
public class ThreadGroupExample {
public static void main(String[] args) {
// Tworzenie grupy wątków
ThreadGroup group = new ThreadGroup("Przykładowa grupa wątków");
// Tworzenie wątków w grupie
Thread thread1 = new Thread(group, () -> {
try {
// Symulacja długotrwałej operacji
Thread.sleep(1000);
System.out.println("Wątek 1 zakończył działanie.");
} catch (InterruptedException e) {
System.out.println("Wątek 1 został przerwany.");
}
}, "Wątek 1");
Thread thread2 = new Thread(group, () -> {
try {
// Symulacja długotrwałej operacji
Thread.sleep(1000);
System.out.println("Wątek 2 zakończył działanie.");
} catch (InterruptedException e) {
System.out.println("Wątek 2 został przerwany.");
}
}, "Wątek 2");
// Uruchomienie wątków
thread1.start();
thread2.start();
// Oczekiwanie na zakończenie wszystkich wątków w grupie
while (group.activeCount() > 0) {
try {
// Oczekiwanie 100 ms, aby uniknąć nadmiernego zużycia CPU
Thread.sleep(100);
} catch (InterruptedException e) {
System.out.println("Główny wątek został przerwany.");
}
}
// Wyświetlenie informacji o zakończeniu
System.out.println("Wszystkie wątki w grupie zakończyły działanie.");
}
}
Wyjaśnienie kodu
- Tworzenie grupy wątków: Utworzono obiekt
ThreadGroup
o nazwie “Przykładowa grupa wątków”. Grupa ta posłuży jako kontener na wątki, które będziemy zarządzać. - Tworzenie i uruchamianie wątków: Stworzone zostały dwa wątki (
thread1
ithread2
), które są przypisane do grupy. Każdy wątek wykonuje symulację długotrwałej operacji, po której wyświetla informację o zakończeniu swojego działania. - Zarządzanie wątkami: W pętli sprawdzamy, ile wątków w grupie jest jeszcze aktywnych. Jeśli jakiekolwiek wątki nadal działają, główny wątek czeka 100 ms przed kolejnym sprawdzeniem. Pozwala to na zminimalizowanie zużycia CPU.
Podsumowanie
Grupy wątków w Javie pozwalają na efektywne zarządzanie i kontrolę nad wątkami w ramach jednej grupy. Ułatwiają to poprzez możliwość wykonywania operacji na całej grupie, jak i monitorowanie ich stanu.
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.