Jakie jest przeznaczenie grup wątków (Thread Groups) w Javie?

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 i thread2), 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.

Scroll to Top