petite question toute bête en java (synchronisation)

petite question toute bête en java (synchronisation) - Java - Programmation

Marsh Posté le 16-05-2006 à 01:42:57    

salut à tous, je viens de voir une petite question d'examen, et j'avoue ne pas comprendre la subtilité (si elle existe)
 
Voilà :
 

Code :
  1. public int sumArrays[int[] a1, int[] a2)
  2. {
  3.   int value = 0;
  4.   int size = a1.length
  5.   if(size == a2.length)
  6.   {
  7.      synchronized(a1){
  8.        synchronized(a2){
  9.          for(int i=0; i<size; i++)
  10.            value += a1[i] + a2[i];
  11.        }
  12.      }
  13.   }
  14.   return value;
  15. }


 
la question est en gros d'expliquer pourquoi il peut y avoir un interblocage, ors je vois pas du tout pourquoi il y en aurait un :??: le corps du synchronized(a2) n'est pas bloquant, donc je comprend pas trop là ...
 
vous avez une idée ?
 
merci :jap:


---------------
- mon feed-back
Reply

Marsh Posté le 16-05-2006 à 01:42:57   

Reply

Marsh Posté le 16-05-2006 à 01:53:52    

euuh en y regardant de plus près, c'est peut être que comme on fait l'affectation à size avant les synchro ... si on modifie la taille des tableaux dans un autre thread, ça peut éventuellement mal boucler dans le for ?
mais bon ça me parait tiré par les cheveux


---------------
- mon feed-back
Reply

Marsh Posté le 16-05-2006 à 10:03:52    

ben oui c'est cela. La longueur peut avoir changé quand tu seras débloqué par le synchronized. Ce qui peut provoquer des problèmes.  
 
La solution serait donc de mettre la méthode Synchronized. Afin que l'objet soit automatiquement verrouillé si on y accède.  
 
Mais bon j'avoue que l'exemple à une drole de synthaxe.

Reply

Marsh Posté le 16-05-2006 à 10:32:21    


moi23372 a écrit :


La solution serait donc de mettre la méthode Synchronized. Afin que l'objet soit automatiquement verrouillé si on y accède.


 
 
bah non, puisque dans ce cas, c'est this qui va être locké, et pas les paramètres qui peuvent être accessibles par ailleurs depuis un autre thread.  
 

moi23372 a écrit :


Mais bon j'avoue que l'exemple à une drole de synthaxe.


 
c'est du java :p


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 16-05-2006 à 10:43:49    

il y a interblocage si en concurrence il y a :
 
sumArrays(a, b) et sumArrays(b, a)
 
et la taille d'un tableau est fixe les gars ...

Reply

Marsh Posté le 16-05-2006 à 13:57:37    

Taz a écrit :

il y a interblocage si en concurrence il y a :
 
sumArrays(a, b) et sumArrays(b, a)
 
et la taille d'un tableau est fixe les gars ...


aaaaaaah ouééééééé bieeeen :jap: :d
merci !!


---------------
- mon feed-back
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed