Bonjour à tous.

Je me tourne vers vous car je me pose une question, je viens de voir un code comme ceci (les 2 méthodes sont dans la même classe...) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
private synchronized void method1()
{
 
  try
  {
    method2();
  }
  catch (Exception1 e)
  {
    // Treats exception
  }
}
 
private synchronized void method2()
{
  if (condition)
  {
    throw new Exception1();
  }
}
Dans mon cas, if (condition) est vrai.

Du coup une exception est levée. Ma question est la suivante, est ce que quand l'exception est levée, le lock sur l'objet est relâché même très brièvement ??

En fait j'ai l'impression que le lock est relaché, car un autre Thread rentre dans une méthode synchronized de cet objet !!

Voila, si vous vouliez bien m'éclairer

PS : Je précise, Java 1.4