Question sur la terminaison du problème du barbier
2 participants
Page 1 sur 1
Question sur la terminaison du problème du barbier
Bonjour,
je n'ai pas bien compris quelle condition doit vérifier le programme pour terminer.
J'ai cru comprendre qu'il fallait faire quelque chose comme :
threadBarbier.interrupt();
Puis récupérer l'exception levée par le wait() mettant en attente le travail du barbier lorsque le salon est vide pour finir le thread.
Je pensais que la condition était "Si le salon est vide alors on termine le thread du barbier", or le barbier peut finir le travail avec le premier client avant que le 2e client arrive => terminaison du thread du barbier avant l'arrivée du deuxième client.
je n'ai pas bien compris quelle condition doit vérifier le programme pour terminer.
J'ai cru comprendre qu'il fallait faire quelque chose comme :
threadBarbier.interrupt();
Puis récupérer l'exception levée par le wait() mettant en attente le travail du barbier lorsque le salon est vide pour finir le thread.
Je pensais que la condition était "Si le salon est vide alors on termine le thread du barbier", or le barbier peut finir le travail avec le premier client avant que le 2e client arrive => terminaison du thread du barbier avant l'arrivée du deuxième client.
antoinezim- Posts : 2
Join date : 16/10/2017
Re: Question sur la terminaison du problème du barbier
Et donc vous répondez à la question que vous posez :-) : il ne suffit pas que le salon soit vide, il faut qu'il n'y ait plus de clients pour que le barbier puisse se terminer. Seule la tâche principale dispose de cette information. C'est donc à elle d'"interrompre" le barbier lorsque tous les clients sont terminés.
La modification de l'interrupted status doit ensuite être détectée dans le thread du barbier, soit par une interrogation explicite (méthode interrupted), soit implicitement : toutes les méthodes d'attente interrogent périodiquement la valeur de ce drapeau et lèvent une InterruptedException lorsqu'elles détectent que celui-ci est positionné.
La modification de l'interrupted status doit ensuite être détectée dans le thread du barbier, soit par une interrogation explicite (méthode interrupted), soit implicitement : toutes les méthodes d'attente interrogent périodiquement la valeur de ce drapeau et lèvent une InterruptedException lorsqu'elles détectent que celui-ci est positionné.
ClaudeDutheillet- Posts : 5
Join date : 26/08/2016
Sujets similaires
» Question sur le probleme du barbier (Semaine 4)
» Question sur la terminaison du dechargeur
» Question sur wait()
» Question sur le TP5
» TME Exercice 6 Question 4
» Question sur la terminaison du dechargeur
» Question sur wait()
» Question sur le TP5
» TME Exercice 6 Question 4
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|