Je sais que c'est mal conseillé mais j'essaie toujours de trouver une méthode pour interrompre un thread qui se bloque, à partir d'un autre thread qui garde le temps. Ce que je fais est: Je démarre le fil du moniteur juste avant qu'une opération de réseau douteuse ne soit sur le point de se produire. Ce thread est censé surveiller le temps écoulé depuis son démarrage et si le temps dépasse une valeur seuil, il tue le thread qui l'a initialement démarré. Afin d'informer ce nouveau thread, quel thread doit être tué, l'objet du nouveau thread, est passé un objet du Thread à surveiller.Comment interrompre un autre thread à partir d'un moniteur Thread
En bref, voici ce qui se passe:
A crée B, B crée C, B dit C sur lui-même, C garde le temps, si le temps expire C tue B (je passe après les détails à C Méthode d'exécution de B en utilisant "currentThread()" et j'ai confirmé que l'objet correct est en effet passé)
Maintenant, le problème est que, cela, ne fonctionne pas, pour une raison quelconque, l'appel à B.interrupt () tue C lui-même.
[Note: Les lettres majuscules désignent les noms de fil]
Quelle est la raison pour C mourir? Toute trace de pile? Savez-vous à coup sûr qu'il meurt? Pouvez-vous poster le code de votre thread de surveillance? –
http://pastebin.com/JVfpkqEg Voici un lien vers le code pour le moniteur, "Hourglass" est juste une petite classe de temporisation que j'ai faite, dans le constructeur, vous passez un délai d'attente en secondes, puis vous pouvez démarrer, arrêter ou vérifier les tâches pour l'achèvement. – angryInsomniac
commentaire suite: Je ne vois aucune raison pour que C meure, il n'y a pas d'erreur signalée donc je ne peux pas vous donner de pile. Je suis sûr qu'il meurt pendant que je regarde l'exécution de thread en temps réel avec eclipse, dès que les instructions requises sont exécutées, thread C matrices. – angryInsomniac