Académique Documents
Professionnel Documents
Culture Documents
class Q{
int n;
return n;
this.n = n;
class PC {
Q q = new Q();
newProducteur(q);
newConsommateur(q);
L’attente active
Le thread est mis dans un état bloqué pendant toute la durée de l’attente
La méthode « wait »
La méthode notifyAll ()
notify () n’a aucun effet lorsqu’il n’y a pas de thread bloqué sur un wait () ;
Exception susceptible d’être lancée par « wait » quand le thread est interrompu
par l’appel à la méthode « interrupt () »
Q q;
Producteur(Q q) {
this.q = q ;
int i = 0;
while(true) q.put(i++);
}
1/27/2021 Bilal Chebaro 17
…
Q q;
Consommateur(Q q) {
this.q = q ;
while(true) q.get();
class PC {
Q q = new Q();
new Producteur(q);
new Consommateur(q);
La méthode notify peut être utilisée lorsqu’il n’y a qu’un seul cas d’attente
if (S.getValeur () > 0)
//Un autre thread peut faire l’opération P juste en ce point
S.P() ; // et entraîner, de ce fait, le blocage non voulu sur ce P
else …..
Package java.util.concurrent ;
Semaphore(int permits) ; //nombre initial des tickets : nombre d’appels non bloquant
Semaphore(int permits, boolean fair) ; //fair == true pour garantir une gestion FIFO
public void acquire (int permits) ; //Demande d’un certain nombre de tickets
s.acquire();
s.release();
import java.util.concurrent.* ;
interface ProdConsInterface {