Laboratorium 5

Transkrypt

Laboratorium 5
Laboratorium 5
Celem ćwiczenia jest budowa prostych aplikacji wielowątkowych działających w
środowisku graficznym. Program ćwiczenia:
uruchamianie i zatrzymywanie wątków,
usypianie wątków na zadany czas metodą sleep(…)
synchronizacja wątków przy pomocy metod synchronizowanych,
uŜycie metod wait() i notify() lub notifyAll().
Programy przykładowe
Proszę zapoznać się z poniŜszymi programami przykładowymi, które ilustrują sposoby
uruchamiania i kończenia wątków w języku Java:
Watki1.java,
Watki2.java, Watki3.java.
Program ProducentKonsumentDemo.java ilustruje sposób synchronizacji
współbieŜnych wątków symulujących jeden z klasycznych problemów współbieŜności. W
programie do synchronizacji wykorzystano metody synchronizowane oraz instrukcje
wait(),notify().
Zadanie 1 (obowiązkowe)
Proszę przeanalizować program ProducentKonsumentDemo.java, a następnie
rozbudować ten program tak by posiadał graficzny interfejs uŜytkownika, który umoŜliwiać
będzie zmianę pojemności bufora oraz zmianę liczby producentów i konsumentów. Przebieg
symulacji powinien być wyświetlany w oknie graficznym typu JTextArea. Ponadto
program powinien być wyposaŜony w dodatkowe przyciski umoŜliwiające wstrzymywanie i
uruchamianie symulacji w dowolnym momencie.
Osoby ambitne mogą rozbudować ten program tak by przebieg symulacji był
prezentowany w formie prostej animacji graficznej.
Zadanie 2 (dla ambitnych)
Proszę napisać program w którym współbieŜnie działające wątki będą przesuwać koraliki
(kółka o róŜnych kolorach) po wspólnej obręczy. Dla kaŜdego koralika powinna być
moŜliwość zmiany prędkości ruchu (np.za pomocą suwaka). NaleŜy przestrzegać zasady, Ŝe
wątki wolniejsze blokują wątki szybsze tzn. koraliki na obręczy nie mogą się wyprzedzać)
Liczba współbieŜnie działających wątków (koralików) powinna być zadawana przy
uruchamianiu programu.
Zadanie 3 (dla ambitnych)