Originariamente inviato da lelefante
Prova a togliere l'istruzione condizione = 0 nel metodo ferma() e vedrai che non basta chiamare interrupt() per femare il thread.
Se vuoi ti posto un esempio:

L'uscita da run e' determinato solo dalla variabile di controllo run.
In realta' il metodo interrupt() si comporta in maniera analoga: imposta a true lo stato di una variabile interna, che puo' essere letta tramite i metodi interrupted() o isInterrupted().
scusa, hai ragione tu... interrupt() manda solo un segnaleal thread... è parecchio che non uso Java e ho postato un po' a caso