Threads01.zip
|
Aplikacja posiadająca GUI z czasochłonnym zadaniem. Nie ma możliwości wykonania jakiejkolwiek akcji, jeśli zadanie się nie zakończy.
|
|
Threads02.zip
|
Aplikacja posiadająca GUI z czasochłonnym zadaniem. Zadanie jest klasą pochodną od Thread, a więc nie ma tego problemu co poprzednio.
|
|
Threads03.zip
|
Aplikacja posiadająca GUI z czasochłonnym zadaniem. Zadanie implementuje interfejs Runnable, a więc nie ma tego problemu co na samym początku.
|
|
Threads04.zip
|
Aplikacja posiadająca GUI z czasochłonnym zadaniem. Zadanie implementuje interfejs Runnable, a więc nie ma tego problemu co na samym początku. W stosunku do poprzedniego przykładu, wprowadzono modyfikację dzięki którym utworzenie wątku i jego uruchomienie odbywa się tak, jak gdyby dziedziczył on z klasy Thread.
|
|
Interrupt01.zip
|
Sposób na cywilizowane zakończenie pracy wątków przy pomocy metody interrupt.
Interrupt działa na metodzie blokującej sleep lub wait powodując powstanie wyjątku InterruptedException. Działa jednak tylko wtedy i dlatego trzeba sprawdzać np. za pomocą konstrukcji Thread.currentThread().isInterrupted() czy w trakcie normalnego działania nie nastąpiło przerwanie za pomocą metody interrupt. Ewentualnie można dodać zmienną flagową i odpowiednią metodę, które będą pełniły podobną rolę.
|
|
ThreadsSync01.zip
|
Problem synchronizacji wątków pokazany na przykładzie wątków operujących na kontach bankowych.
|
|
Deadlock01.zip
|
Program Toaleta jako przykład na możliwość wystąpienia zakleszczenia w przypadku rywalizacji o zasób.
|
|
Deadlock02.zip
|
Program Toaleta jako przykład na możliwość wystąpienia zakleszczenia w przypadku rywalizacji o zasób. W tym przypadku konieczne jest użycie metody wait do ,,dobrowolnego'' oddania obiektu i oczekiwanie na to aż inny wyjątek wywoła metodę notify/notifyAll.
|
|