mersai
Messages postés10Date d'inscriptionlundi 26 avril 2004StatutMembreDernière intervention22 avril 2009
-
28 mars 2009 à 13:41
mersai
Messages postés10Date d'inscriptionlundi 26 avril 2004StatutMembreDernière intervention22 avril 2009
-
1 avril 2009 à 15:57
je viens de commencé avec les threads en java. et mon problème est comment synchroniser deux threads qui s'attendent mutuellement sur la réception d'un message.
je m'explique, chacun de ces deux threads est en attente pendent un temps donné, a l'expiration de ce temps il envoi un message au deuxième, mais il peut recevoir un message avant l'expiration du temps d'attente (si le temps du deuxième expire avant lui) dans ce cas il va se mettre a l'état sommeil.
je sais que lidée est d'utiliser wait() et notifyAll() mais comment?
mersai
Messages postés10Date d'inscriptionlundi 26 avril 2004StatutMembreDernière intervention22 avril 2009 31 mars 2009 à 13:25
bonjour,
voila j'ai essayé la solution que vous m'avez donné et je n'arrive pas a avoir le résultat.
de maniéré précise, je veux mettre en ouevre la situation suivante en utilisant les mécanisme de synchronisation (notiffyAll() et wait() ) des threads sous java:
j'ai 4 threads que je lance depuis une fonction main(), chacun se met en attente d'un message, de la part des autres, pendant un temps quelconque. si le temps d'attente expire et le thread n'a pas reçu de message il envoi un message aux autres, par contre s'il reçoit un message de l'un des trois autres threads il va se mettre a l'état sleep.
notez que le thread qui envoi le message affiche un message "je suis actif"
ceux qui se mettent a sleep() après avoir reçu un message affichent "inactif"
j'ai essayé en faisant la synchronisation sur un message de type Objet dans la méthode run ():
msg = new OBjet ();
et les deux méthode
synchronized(msg){
msg.wait(temps attente)
}
un thread qui appel cette méthode ne quitte pas l'attente jusqu'à ce qu'il reçoit notifyAll des autres, je veut qu'il quitte dés que te temps d'attente est finie? comment le faire?
synchronized(msg){
msg.notiffyAll()
}
mais j'ai du mal a avoir des résultats, j'ai essayé et essayé sans aboutir a rien