Witam mam pewien problem teoretyczny.

Z tego co słyszałem nie można wątków przerywać (interrupt). Problem jest w tym że mam w run wątku funkcję która blokuje wykonanie programu - powiedzmy np jakiś socket nasłuchuje, albo włącza się ściąganie czegoś.
Zazwyczaj wątek kończyłem za pomocą flag. boolean shouldend ustawiałem jak wątek powinien się kończyć.

wątek
...

if (shouldend)
   return;

obiekt.robcos();  //blokuje na czas 10sek. a ja chciałbym mieć możliwość przerwania tej funkcji. nie ja ją pisałem, tylko z niej korzystam.

if (shouldend)
  return;

jak to zrobić?
Generalnie chciałbym przerwać watek. Jeśli metoda robcos() blokuje wtedy wątek się nie kończy na czas w jakim ona się wykonuje