[ Pobierz całość w formacie PDF ]
Przyk ad u ycia komentarzy dokumentacyjnych .......................................................................579
Skorowidz ..............................................................................................581
Poleć książkę
Kup książkę
Rozdzia 11.
Programowanie
wielow tkowe
W tym rozdziale poznasz:
podstawy wielow tkowo ci,
klas Thread i interfejs Runnable,
tworzenie w tku,
tworzenie wielu w tków,
sposób ustalania zako czenia w tku,
korzystanie z priorytetów w tków,
synchronizacj w tków,
synchronizacj metod,
synchronizacj bloków,
komunikacj mi dzyw tkow ,
wstrzymywanie, wznawianie i ko czenie dzia ania w tków.
Chocia Java dostarcza programistom wielu innowacyjnych mo liwo ci, to z pewno ci jedn
z najbardziej ekscytuj cych jest obs uga programowania wielow tkowego. Program wie-
low tkowy zawiera dwie lub wi cej cz ci, które mog dzia a równolegle. Ka d z tych
cz ci nazywamy w tkiem, a ka dy w tek definiuje osobn cie k wykonania. Wielow tko-
wo jest zatem szczególn form wielozadaniowo ci.
Poleć książkę
Kup książkę
364 Java. Przewodnik dla pocz tkuj cych
Podstawy wielow tkowo ci
Istniej dwa podstawowe typy wielozadaniowo ci, z których jeden opiera si na procesach,
a drugi wykorzystuje w tki. Wa ne jest, aby zrozumia ró nice mi dzy nimi. Proces odpo-
wiada w zasadzie wykonywanemu programowi. Zatem wielozadaniowo wykorzystuj ca
procesy umo liwia Twojemu komputerowi równoleg e wykonywanie dwóch lub wi cej pro-
gramów. Wykorzystanie procesów umo liwi Ci na przyk ad uruchomienie kompilatora Javy
w tym samym czasie, gdy piszesz kod ród owy w edytorze lub przegl dasz strony w Internecie.
W przypadku wielozadaniowo ci wykorzystuj cej procesy program jest najmniejsz jednostk
kodu podlegaj c szeregowaniu do wykonania przez procesor.
W drugim rodzaju wielozadaniowo ci najmniejsz jednostk kodu szeregowan przez system
jest w tek. Oznacza to, e pojedynczy program mo e równocze nie wykonywa dwa lub wi cej
w tków. Na przyk ad edytor tekstu mo e w tym samym czasie formatowa jeden tekst i dru-
kowa inny, pod warunkiem e obie akcje s wykonywane przez osobne w tki. Chocia Java
wykorzystuje rodowiska wielozadaniowe oparte na procesach, to nie umo liwia sterowania
ich dzia aniem. W przypadku w tków sprawy maj si inaczej.
Podstawow zalet wielow tkowo ci jest mo liwo tworzenia efektywnie dzia aj cych pro-
gramów, poniewa wielow tkowo pozwala wykorzysta okresy bezczynno ci pojawiaj ce
si w dzia aniu wi kszo ci programów. Wi kszo urz dze wej cia i wyj cia takich jak porty
sieciowe, nap dy dyskowe czy klawiatura dzia a znacznie wolniej od procesora. Z tego powodu
program cz sto sp dza wiele czasu na oczekiwaniu na mo liwo wys ania lub odebrania
danych za po rednictwem urz dzenia. Zastosowanie wielow tkowo ci pozwala programowi
wykonywa w tym czasie inne zadania. Na przyk ad w czasie gdy jedna cz programu wysy a
plik w Internecie, inna mo e zajmowa si odczytem klawiatury, a jeszcze inna buforowa
kolejny blok wysy anych danych.
W ostatnich kilku latach mamy do czynienia z upowszechnieniem si systemów wieloproce-
sorowych i wielordzeniowych. Oczywi cie nie wypar y one zupe nie systemów jednoproceso-
rowych. Wielow tkowo w Javie mo e dzia a w obu typach systemów. W przypadku sys-
temu jednordzeniowego wykonywane równolegle w tki wspó dziel procesor i ka dy w tek
otrzymuje pewien przedzia czasu procesora. Zatem w systemie jednordzeniowym dwa lub
wi cej w tków nie jest w rzeczywisto ci wykonywanych równocze nie, ale ich zastosowanie
pozwala wykorzysta czas bezczynno ci procesora. Natomiast w systemach wieloproceso-
rowych b d wielordzeniowych w tki rzeczywi cie mog dzia a równolegle. W wielu przy-
padkach pozwala to jeszcze bardziej poprawi efektywno dzia ania programu i zwi kszy
szybko wykonywania niektórych operacji.
W tek mo e znajdowa si w jednym z kilku stanów. Mo e by wykonywany. Mo e by
gotowy do wykonywania, gdy tylko otrzyma czas procesora. Wykonanie w tku mo e zosta
zawieszone, co oznacza, e w tek nie jest wykonywany przez pewien czas. Jego wykonywanie
mo e zosta pó niej podj te. W tek mo e zosta zablokowany w oczekiwaniu na zwolnienie
pewnego zasobu. I wreszcie wykonywanie w tku mo e zosta zako czone, co oznacza, e
nie mo na ju go podj .
Wielow tkowo wi e si nierozerwalnie z poj ciem synchronizacji, która umo liwia skoor-
[ Pobierz całość w formacie PDF ]