J'ai des difficultés avec des fils en Java, j'ai trois threads - fil1, fil2 et fil3. Celles-ci font une tâche quand il a commencé, je veux arrêter ces deux threads par Thread1. J'ai mis Filg1 pour Sleep (500) Code>, puis j'arrête les deux threads, mais le processus de deux threads est toujours en marche. Avez-vous une idée de comment faire cela? P>
3 Réponses :
Vous pouvez soit: p>
Un exécuteur exécutif qui fournit des méthodes pour gérer la résiliation et les méthodes qui peut produire un avenir pour suivre le progrès d'un ou plusieurs Tâches asynchrones. P> blockQuote>
Les conditions initiales sont également importantes. Tous les filets doivent commencer à sourdine.
Vous ne pouvez pas arrêter un fil d'un autre fil. Vous ne pouvez demander que le fil s'arrête et la meilleure façon de le faire est de l'interrompre. Le thread interrompu doit cependant collaborer et répondre à l'interruption dès que possible en arrêtant son exécution. p>
Ceci est couvert dans le didacticiel Java sur la concurrence . p>
Est-ce que "un fil ne peut pas arrêter un autre fil" (dans le même processus) une idée générale non seulement pour Java? Est-ce parce que seule l'interruption entre les processus a une signification?
Comment essayez-vous de les arrêter? Au lieu de cela, recherchez une sorte d'indicateur pour le fil 1 pour communiquer pour enfiler 2 et 3 qu'ils devraient arrêter. En fait, vous pouvez probablement utiliser interruption . P> ci-dessous, fil.Interrupt est utilisé pour implémenter le Coordination. P> Vous pouvez également utiliser un De même, vous pouvez choisir, plutôt que Utilisez mieux encore, si vous tirez parti de Cela profite du fait que threadpoolexecutor.shutdownNow interrompt ses fils de travailleur dans une tentative de fermeture du signal. P> en cours d'exécution, la sortie doit être quelque chose à l'effet de: p> note que les deux dernières lignes peuvent venir dans ei la commande. p> p> thread.stop code>? Soyez averti que cette méthode est obsolète.
volatile booléen code> (ou volatile code> et Java. util.concurrent.atomic. * code> vous permet de vous assurer que la mutation du drapeau est vue par les threads de sujet. p> atomicboolcan code>, utilisez un champ tel que: p>
Obtenu un certain code comme exemple ??