In caso di un timeout specifico, ho bisogno di uccidere/annullare/interrompere/fallire un thread in esecuzione. Io uso ExecutorService per gestire un pool di thread, attraverso il quale sono in grado di annullare l'attività utilizzando il metodo cancel() di Future che rimuove questo dalla vista ExecutorService, ma il thread stesso continua a funzionare.Interrompe/uccide un thread corrente
Guardandosi intorno online, le persone talk about interrupting threads hanno un ciclo che utilizza il metodo isInterrupted() o sono in attesa su IO che può essere gestito dall'affiorare InterruptedException.
Qual è la pratica generale sull'uccisione dei thread che non esegue il ciclo (o ha altri hook) e non sta aspettando l'I/O? Guardandosi intorno, Thread.stop() sembra fare ciò di cui ho bisogno (uccidendo ciecamente il thread) ma non è consigliabile utilizzarlo.
"uccidere ciecamente il thread" è qualcosa che non si dovrebbe fare, mai. – Viruzzo
Thread.stop() va bene solo per piccoli pezzi di codice in cui è possibile comprendere le conseguenze dell'arresto su ogni linea possibile. Questo tipo di codice è anche semplice per aggiungere linee per controllare il flag interrotto. cioè non è una soluzione ideale nemmeno in teoria. –