Jak skutecznie przerwać wykonywanie wątku obiektu Future

0

Witam

Mam listę klas implementujących interfejs Callable. W klasie tej wywoływane są metody których czas wykonania jest spory.
Czasami jest potrzeba przerwania wszystkich wykonywanych metod call().

I teraz pytanie:

jeżeli na każdym obiekcie Future wykonam cancel(true) to call() nie przerywa swojej pracy tylko dalej wywołuje po kolei metody...wiem, ze w sumie cancel nie do tego służy.

Ale jak w klasach implementujacych interfejs Callable stworzyłem metodę w której wołana jest metoda Thread.currentThread.interrupt. i to też nie zatrzymało funkcji call() to co może zatrzymać?

Na razie przed wykonaniem metody sprawdzam czy flaga przerwij jest na true ale to lamerskie mi isę wydaje.

Pozdrawiam

0

Lamerskie jest udupianie wątku za pomocą Thread.stop/ suspend/ destroy lub czegoś w tym stylu. Powoduje to np blokowanie zasobów lub zakleszczenie.

Sprawdzanie flagi czy innej zmiennej w pętli to jedyne zalecane rozwiązanie.

http://download.oracle.com/javase/6/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1