Il programmatore non dovrebbe nemmeno bisogno di preoccuparsi quando i fili sono interrompendosi a vicenda
Questo non è vero. Ci sono molte, molte situazioni in cui vuoi sapere che è stata richiesta un'interruzione, ma la ignorerai per un po 'per finire il lavoro che stai facendo.
Ad esempio, si supponga che un thread apra un file e inizi a scrivere alcuni dati. Questo thread, quindi, blocca, in attesa del resto dei dati da calcolare. Supponiamo che un secondo thread cerchi di interrompere il primo. Cosa dovrebbe fare? Semplicemente muori, e forse finisci con un file corrotto, incompleto? Dovrebbe essere ripulito eliminando il file che ha iniziato a scrivere? Dovrebbe ignorare la richiesta di interruzione e aspettare solo la fine dei dati che deve scrivere? Dovrebbe scrivere qualcosa che significa "Sono stato interrotto qui", in modo che possa continuare il suo lavoro da quel punto la prossima volta?
In uno scenario diverso, si supponga di disporre di un server HTTP. Supponiamo che gli utenti stiano accedendo al tuo server e, per esempio, scaricando un grosso file da esso. Vuoi fermare il server. L'applicazione proverà quindi ad interrompere tutti i thread di lavoro. Cosa dovrebbero fare? Basta interrompere i download? O dovrebbero aspettare che gli utenti finiscano di scaricare i loro file e solo dopo che dovrebbero morire, senza accettare altre richieste? Entrambi gli scenari sono ugualmente validi.
Come vedete, ci sono troppi scenari possibili e sarebbe terribile se non avessimo modo di sapere che è stata richiesta un'interruzione. A volte, lascerai semplicemente che il thread muoia. A volte, è necessario ripulire l'ambiente. A volte, vuoi che finisca la richiesta su cui sta lavorando, ma non accetti altre richieste.
fonte
2013-04-08 03:57:15
Suppongo che ciò consenta allo sviluppatore di intraprendere l'azione appropriata ogni volta che il thread viene interrotto. Il thread potrebbe svolgere alcune attività critiche e potrebbe essere necessario gestire l'interruzione in modo corretto. –
Per costringerti a prenderlo. – EJP
Si prega di non chiuderlo. Ci sono alcune grandi risposte qui – Victor