2010-09-22 9 views

Répondre

2

Souvent, un moyen de le faire est de créer une variable membre volatile booléenne, peut-être appelée "stopThread". Le thread interroge périodiquement cette variable pour voir si elle devrait se terminer.

+0

Merci, c'est ce que je pense que je vais faire. J'ai fait une variable booléenne appelée 'resume'. J'aime 'stopThread', je vais devoir m'assurer que je nettoie correctement. – NullPointer0x00

+1

Il est important de noter le mot clé "volatile" mentionné dans la réponse. Sans cela, il n'y a aucune garantie que toute modification de la valeur du booléen soit visible par le thread en question. –

1

Vous pouvez utiliser la méthode interrupt. Vous pourriez faire un peu de nettoyage avant de quitter le fil. Un simple tutoriel est

+0

La méthode d'interruption n'est pas suffisante. Par exemple, si un thread envoie un fichier via FTP (4 Go), l'interruption d'un autre thread ne fait rien tant que le thread ne bloque pas. – NullPointer0x00

+0

Vous pouvez utiliser isInterrupted() ou interrompu() (réinitialise le drapeau d'état) pour voir s'il est interrompu. Peut-être qu'un hybride des deux approches est nécessaire dans certains scénarios. – codeplay

+0

@ NullPointer0x00 l'opération de longue durée sera un problème à la fois pour l'interruption et la variable booléenne. Une combinaison des deux approches peut être mieux à attirer l'attention du fil. Bien sûr, cela dépend de ce que le thread est censé faire. –

Questions connexes