I metodi che hai citato sono deprecati perché una volta usati potrebbero portare il sistema a uno stato instabile: è proprio come il processo kill. L'utilizzo di questi metodi non dà al thread alcuna possibilità di uscire con garbo.
La conclusione è che ciascun thread che si sta implementando deve disporre di un proprio meccanismo per l'uscita graduale. Tipicamente fai quanto segue. Crea boolean
flag exit
ovvero false
per impostazione predefinita. Il metodo del filo run()
dovrebbe attuare ciclo come:
while (!exit) {
// do the job
}
Add metodo exit()
che trasforma questo flag per true
, in modo che quando il metodo viene chiamato dall'esterno filo lascerà il ciclo while
alla prossima iterazione.Dovresti preoccuparti di chiudere le risorse ecc quando esci.
Ovviamente è possibile migliorare il meccanismo con l'invio di cantare
Non si interrompe un thread, basta che il metodo 'run' termini l'esecuzione. –
Potresti approfondire il tuo caso d'uso sul perché vuoi interrompere una discussione? – Vikdor
Per completezza, l'altro modo è terminare l'intero processo, che funzionerà. –