Java


Java

Threads.

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.