[Threads] Synchronisation
Bonjour,
J'ai un probleme de synchronisation de thread.
J'ai donc une class qui herite de thread.
cette classe possede
-une methode synchronized demandeImage().
-une methode run:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
public void run() {
CamClass uneCam = (CamClass)mcc.vCam.getID(this.idCam);
while(uneCam.getEnLecture()) {
demandeImage();
try {
this.sleep(100);
} catch(Exception e) {
System.err.println("Impossible d'effectuer le sleep");
}
}
System.out.println("Arret du thread");
} |
Vous l'aurez compris, tant que le thread est vivant, je fais une demande d'image, et ensuite je sleep 100ms.
C'est là que ça se complique. dans la methode demandeImage, j'envoie et recupere des données a partir d'une flux (InputStream et OutputStream).
Si je lance un seul thread, pas de probleme. Si j'en lance 2 ou + les thread font des demandeImages(), simultanement. De ce fait il récupere des octets qui ne leurs sont pas déstiné etc etc...
Je voudrais donc savoir comment faire pour que, quand un thread appelle la methode demandeImage, tous les autres threads attendent, une fois demandeImage terminé, le thread se met en wait, et permet a un autre thread d'appeler demandeImage()... etc etc.
J'ai essayé avec notifyAll() et wait(), mais je ne suis arrivé a rien...
Merci de vos lumieres :)