Rozdział 7. Wątki

start() nie powoduje wystartowania wątku, lecz jego dodanie do kolejki gotowych do wykonania. Możliwośći stworzenia wątku:
  1. Implementacja klasy dziedziczącej po Thread.
  2. Implementacja klasy implementującej interface Runnable, stworzenie klasy Thread podając wcześniej zaimplementowaną klasę w konstruktorze.

Raz zakończonego wątku nie można jeszcze raz uruchomić, trzeba go stworzyć na nowo i znowu start(). Ponownie wywołanie start() lub run() spowoduje wywołanie zwyczajnej metody. Wątek można przerwać metodą interrupt().

Nadanie priorytetu nie daje pewności co do natychmiastowego zastosowania zmian. Priorytet wątku mówi o statystycznym ogólnym zasotsowaniu. Wątek dziedziczy swój priorytet po jego rodzicu (wątku).

Daeon Threads - setDaemon(boolean) (standardowy false).

Yielding - zaprzestanie wykonywania i umieszczenie wątku w kolejce Ready. Jeśli jest tylko jeden wątek oczekujący, to yield() nic nie daje. yield() nie powoduje także zaprzestania wątku ze względu na wątki o niższym priorytecie.

wait(), notify() i notifiAll() mogą być wywołane tylko z metody synchronized.

Gdy wywołuje się metodę synchronized - klasa musi dostać lock na dany obiekt (lub całą klasę jeśli metoda jest static).

Brak komentarzy:

Prześlij komentarz