Bonjour
J'essaye de faire un tableau de verrous Lock comme ceci
mais le mesLock dans la boucle for ainsi que le i sont surligné en rouge. Le code passe pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 final Lock mesLock[]=new ReentrantLock[100] ; int i=0; for( i=0;i<100;i++) { Lock mesLock[i] = new ReentrantLock(); }
Pour explication de ce tableau, je crée dans une classe n objets ( de 1 à 10 par ex) qui tournent chacun dans un Thread et cahque objet à 2 Lock, V1 et V2.
V1 dit qu'il travaille. V2 dit qu'il a recu l'info de l'object n-1.
L'object 1 lock le verrou1 (V1.lock()) qui est lu par l'object 2 qui se trouve donc arrété et qui à en // lock son V2 par V2.lock().
Quand l'object 1 fini sont travail, il débloque V1 par V1.unlock(). mais est bloqué sur V2 de l'object 2.
Le 2, plus bloqué par le V1 de l'object n-1 reprend, et informe par son V2.unlocl() l'object 1 de reprendre, celui-ci reprend son travail.
Et ainsi de suite, production, consomation....
Mais il se trouve que l'object 3 bloqué sur le verrou du 1 alors qu'il n'est en liaison que sur le 2 normalement.
Que ce passe t-til ? C'est comme si les verrou de l'object 3 bloquaient l'object 3
J'ai donc voulue pour être sur de l'indépendance de mes verrous créer ce tableau de Lock et d'en envoyer le 0 et 1 à l'object 1, le 2 et 3 à l'object 2...
Merci par avance.
Partager