ThreadGroup - grupy wątków - 1

Witaj Amigo!

Zacznijmy dokładnie zajmować się wątkami.

Aby żaden wątek nie mógł się zatrzymać i przerwać wszystkich wątków z rzędu, wprowadzono pojęcie „grupy wątków”. Wątek może wpływać tylko na inne wątki, które znajdują się w tej samej grupie co on. ThreadGroup to klasa, która zarządza grupami wątków. Takie podejście pozwala zabezpieczyć wątki przed niepożądanymi zmianami.

Czasami trzeba wykonać kod, któremu nie można w 100% zaufać. Dlatego wygodnie jest umieścić wszystkie jego wątki w osobnej grupie i zabronić im ingerowania w pracę głównej grupy wątków.

Grupa wątków może zawierać inne grupy. Pozwala to na zorganizowanie wszystkich wątków i grup w hierarchiczne drzewo. W takim drzewie każda grupa wątków, z wyjątkiem początkowej, ma swoją własną grupę nadrzędną.

Klasa ThreadGroup posiada metody, które pozwalają uzyskać listę wszystkich jej wątków, a także wpływać na nie/zmieniać je. Kiedy tworzymy nowy wątek i nie określamy jawnie grupy, dołącza on do tej samej grupy, co wątek twórcy.

Oto kilka metod klasy ThreadGroup:

metoda Opis
String getName()
Zwraca nazwę grupy
ThreadGroup getParent()
Zwraca grupę nadrzędną
void interrupt()
Kończy wszystkie wątki w grupie.
boolean isDaemon()
Sprawdza, czy grupa jest demonem
void setDaemon(boolean daemon)
Ustawia właściwość demona grupy
int activeCount()
Zwraca liczbę aktywnych wątków w grupie i jej podgrupach
int activeGroupCount()
Zwraca liczbę aktywnych grup w grupie i jej podgrupach
int enumerate(Thread[] list)
Umieszcza wszystkie aktywne wątki w tablicy i zwraca ich liczbę.
int getMaxPriority()
Zwraca maksymalny priorytet wątków w grupie.
void setMaxPriority(int priority)
Umożliwia ustawienie maksymalnego priorytetu wątków w grupie i podgrupach.