tuer un thread en cours d'exécution en java?
Comment tuer un thread en cours d'exécution en java
possible dupe: stackoverflow.com/questions/94011/...
OriginalL'auteur JavaUser | 2010-06-28
Vous devez vous connecter pour publier un commentaire.
Comment tuer un thread en cours d'exécution en java
OriginalL'auteur JavaUser | 2010-06-28
Vous devez vous connecter pour publier un commentaire.
Vous pouvez demander le fil pour interrompre, en appelant
Thread.interrupt()
Noter que quelques autres méthodes similaires sémantique existe -
stop()
etdestroy()
- mais ils sont obsolète, parce qu'ils sont dangereux. Ne soyez pas tentés de les utiliser.Voir Bozho "dangereux", en particulier "Que dois-je utiliser à la place du Fil.stop()" de la section, à voir la manière canonique de actuall kill un thread. L'interruption simplement tout en cours d'exécution de blocage des appels d'arrêter de courir, mais ne sera pas, en soi, arrêter le fil de l'exécution.
il est, comme de Java 1.5
il y a aussi le "petit problème" que la javadoc avant JDK 1.5 pour
destroy()
dit "(Cette méthode n'est pas implémentée.)". Il ne fonctionnera pas, même si vous essayez de l'utiliser.OriginalL'auteur Bozho
Comme Bozho dit, Fil.interrupt() est le générique et la bonne façon de le faire. Mais rappelez-vous qu'il exige le fil de coopérer; Il est très facile à mettre en œuvre un fil qui ne tient pas compte de l'interruption des demandes.
Pour un morceau de code pour être interruptible de cette façon, il ne devrait pas ignorer les InterruptedException, et il doit vérifier l'interruption drapeau sur chaque itération de boucle (à l'aide de Fil.currentThread().isInterrupted()). Aussi, il ne faut pas non interruptible opérations de blocage. Si ces opérations existent (par exemple en attente sur un socket), puis vous aurez besoin d'un plus spécifiques à l'interruption de la mise en œuvre (par exemple, la fermeture de la socket).
OriginalL'auteur Eyal Schneider
Peu de temps vous avez besoin
Thread.interrupt()
Pour plus de détails, consultez la section
How do I stop a thread that waits for long periods (e.g., for input)
dans cet article Pourquoi SontThread.stop
,Thread.suspendre
,Thread.resume
etde l'Exécution.runFinalizersOnExit
Obsolète?.OriginalL'auteur Incognito