Bonjour,

J'ai encore une question métaphysique sur Java :-p

Je vais m'expliquer avec du code :
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
 
public class SemaphoreViteFait {
	Integer i = 0;
 
	public void pending() throws InterruptedException{
		synchronized (i) {
			while(i >0){
				wait();
				i++;
			}
		}		
	}
 
	public void oneMore(){
		synchronized (i) {
			i++;
			notify();
		}
	}
}
D'après la javadoc c'est de cette manière qu'il faut utiliser les wait et notify (http://java.sun.com/j2se/1.5.0/docs/...ct.html#wait()).


La question qui me ronge, à priori si un thread a appelé la méthode oneMore et est bloqué sur wait, comment un autre thread pourra le débloquer car il est bloqué par la barrière du synchronized ?

En rédigeant ce topic une autre question m'est venue, est ce que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
class toto{
   synchronised void methodeSynchronised(){
    }
}
C'est la même chose que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
class toto{
   void methodeSynchronised(){
       synchronised (this){
       }
    }
}
Et oui je cherche à maîtriser entièrement la gestion de thread en Java...

---> edit ma question était incompréhensible je remercie bidi d'avoir réussi la prouesse de la comprendre :-)