Współbieżność w Javie
III rok Informatyka
Laboratorium 2
- Ćwiczenie - test sposobu szeregowania wątków przez JVM
- Do ćwiczenia potrzebny będzie plik
Race2.java
- Przetestuj program pod róznymi systemami operacyjnymi (np.
Solaris i Linux). Jaki jest efekt i jakie można z niego wyciągnąc
wnioski?
- Monitory w javie
- Związane z każdym obiektem
- Same nie są reprezentowane jako klasy / obiekty!
- Synchronizują dostęp do metod i bloków synchronized
- Dodatkowy monitor związany z klasą - dla metod statycznych
synchronizowanych
- Synchronizacja
- Metody wait, notify / notifyAll
- Zdefiniowane w klasie Object
- Koordynacja działania wielu wątków
- wait
- może być wywołana tylko przez wątek będący w posiadaniu
monitora
- powoduje uśpienie wątku w kolejce związanej z monitorem
(którym?)
- zwalnia monitor
- wątek może być obudzony tylko gdy inny wątek wywoła notify
(jaki to musi być wątek?)
- notify
- budzi jeden wątek spośród oczekujących w kolejce 'wait'
(której kolejce?)
- obudzony wątek oczekuje aż wątek wywołujący notify
zwolni monitor
- notifyAll działa jak notify, ale budzi
wszystkie wątki
- Ćwiczenie - semafory
- Celem ćwiczenia jest zaimplementowanie klasy reprezentującej
semafor binarny - 'Semaphore', a następnie użycie tej klasy do
realizacji wzajemnego wykluczania w przykładzie wyścig
balis at wszib.edu.pl
|