Po ustaleniu rozmiaru tablicy tworzony jest nowy obiekt typu % ; w konstruktorze dodawanesą do apletu m...

Jak cię złapią, to znaczy, że oszukiwałeś. Jak nie, to znaczy, że posłużyłeś się odpowiednią taktyką.
in. przycisk i pole tekstowe każdego obiektu % .
Wciśnięcie przycisku oznacza przejście całej tablicy obiektów % i wywołanie wobec
każdego metody . Jak pamiętamy, przeprowadza całą potrzebną inicjację i wy-
wołuje dla danego wątku.
Klasa obsługi zdarzenia , jedynie zmienia znacznik obiektu % na przeciwny i jeżeli
skojarzony wątek po raz kolejny ją sprawdzi, to może odpowiednio zareagować.
Wartość przykładu polega na tym, iż pozwala on na łatwe stworzenie dużych zbiorów niezależ-
nych podzadań i monitorowanie ich zachowania. W tym przypadku, jeżeli liczba podzadań wzro-
śnie, to Twój komputer prawdopodobnie wykaże więcej rozbieżności w prezentowanych warto-
ściach liczbowych, z powodu sposobu, w jaki wątki są obsługiwane.
Radzę również poeksperymentować, aby odkryć, jak ważne jest wywołanie -- zamiesz-
czone wewnątrz % . Jeżeli się go usunie, to wszystko działa w porządku, dopóki nie
wciśnie się przycisku przełącznika. Wtedy wybrany wątek uzyskuje wartość fałszu dla
i jest po prostu związana w nieskończonej pętli, co okazuje się być trudne do przerwania ze
względu na wielowątkowość — więc program przestanie reagować i po prostu stanie.
Wątek „demon” to wątek, który powinien zapewnić ogólne usługi w tle programu w czasie jego
działania, ale nie jest bezpośrednio związany z główną częścią programu. Więc kiedy wszystkie
wątki nie będące demonami zakończą pracę, program również. Odwrotnie: jeżeli wciąż są jakieś
działające wątki nie będące demonami, to program się nie zakończy (istnieje na przykład wątek,
który uruchamia ).
Aby się przekonać, czy wątek jest demonem, wystarczy wywołać jego metodę . . Można
też włączyć lub wyłączyć „demoniczność” wątku dzięki . . Jeśli wątek jest demonem,
to każdy wątek, który stworzy, stanie się również automatycznie demonem.
Kolejny przykład pokazuje wątki demony:
C%
O! % 5
% '(
C% & 7! ,
0;O< #(
7! ?@ 7! ?0;O<@(
)C% .1,
C% . 1(
.1(
:
) .1,
. #(0;O<(==1
?@ C% 0 .1(
. #(0;O<(==1
0% .
/?/==/@C% .1 /
=?@C% .11(
!. 1
.1(
:
:
C% 0 & 7! ,
)C% 0 . 1,
0% .
/C% 0 /==/ /1(
.1(
:
) .1,
!. 1
.1(
:
:
)C% ,
)% .0 ?@ 1
! ;3<& ,
7! C% .1(
0% .
/C% .1 /=C% .11(
E% %
5P5J I
0% ./N N5/1(
0% .1(
:
:A
Wątek . ustawia swój znacznik „demoniczności” na „true” i tworzy grupę innych wątków,
by pokazać, iż są one również demonami. Następnie wchodzi do nieskończonej pętli wywołującej
metodę , aby oddać sterowanie innym procesom. W poprzednich wersjach tego programu
nieskończone pętle inkrementowały licznik typu , ale to prowadzi do zatrzymania całego pro-
gramu. Zastosowanie pozwala mu natomiast na normalną pracę.
Nie ma w przykładzie nic, co powstrzymałoby przed zakończeniem programu, kiedy swoje zada-
nie zakończy metoda , ponieważ uruchomiliśmy tylko wątki demony. Zatem można zaob-
serwować wynik uruchomienia wszystkich wątków demonów. # jest przygotowany do
odczytu, stąd program będzie czekał na wciśnięcie klawisza, zanim zakończy pracę. Bez tego triku
zobaczylibyśmy tylko parę wyników tworzenia wątków demonów (spróbuj zamienić kod
przez wywołanie o różnym czasie uśpienia, aby zaobserwować działanie).
Można myśleć o programie jednowątkowym, jak o samotnej jednostce przemieszczającej się po
przestrzeni zadań i wykonującej jedną rzecz naraz. Ponieważ istnieje tylko jedna jednostka, nigdy
nie trzeba się martwić sytuacją, że dwie w tym samym czasie spróbują wykorzystać ten sam zasób,
jak dwoje ludzi próbujących zaparkować w tym samym miejscu lub przejść przez drzwi w tej sa-
mej chwili albo nawet jednocześnie mówić.
W przypadku wielowątkowości samotność już nie istnieje, ale zachodzi możliwość, iż dwa lub
więcej wątków będzie usiłowało użyć tego samego ograniczonego zasobu równocześnie. Musimy
zapobiec kolizji przy dostępie do zasobu albo będziemy mieli dwa wątki próbujące sięgać do tego
Powered by wordpress | Theme: simpletex | © Jak cię złapią, to znaczy, że oszukiwałeś. Jak nie, to znaczy, że posłużyłeś się odpowiednią taktyką.