Ceci est une prévisualisation d'un thème de Hitskin.com
Installer le thème • Retourner sur la fiche du thème
Question à propos de notify() et notifyall()
3 participants
Page 1 sur 1
Question à propos de notify() et notifyall()
bonjour tous le monde. jai un question conçernant les methodes notify() et notifyall() ,a quoi sert ces fonctions????
et j'aime bien quil aura un bon exemple ? et merci
et j'aime bien quil aura un bon exemple ? et merci
owenho- Modérateur
- Messages : 115
Points : 5744
Réputation : 4
Date d'inscription : 02/05/2009
Age : 34
Localisation : larache/rabat
Re: Question à propos de notify() et notifyall()
notify et notifyAll sont deux fonction de la classe Object que les méthodes synchronisées peuvent appeler à partir des objet dont elles possèdent le verrou ( l'objet que la fonction synchronisé a interdit l'accés). Donc évidemment on utilise ces deux fonctions dans une fonction synchronisée quand on a plusieurs threads (t1 et t2 par exemple) qui utilise une même ressource (un objet), et t1 fait un traitement préparatoire sur l'objet pour que t2 le complète (affiche un attribut de l'objet après le traitement effectué par t1 par exemple). Pour cela on met en attente le thread t2 (avec la méthode wait())jusqu'à ce que t1 finisse son traitement puis on appelle notifyAll() à partir de l'objet pour prévenir les autres threads en attente que cet objet et disponible.
La méthode notify() prévient un seul thread, mais ce dernier dépends du système d'exploitation, donc on peut pas prévoir ce que va se passer. En général, l'utilisation de notify() n'est pas recommandé.
La méthode notify() prévient un seul thread, mais ce dernier dépends du système d'exploitation, donc on peut pas prévoir ce que va se passer. En général, l'utilisation de notify() n'est pas recommandé.
- Code:
class ListeTab {
private String [] tab = new String [ 50 ] ;
private int index = 0 ;
synchronized void ajoute(String s) {
tab [ index ] = s;
index++;
notifyAll();
System.out.println("notify() exécuté");
}
synchronized String getPremierElementBloquant () {
//tant que la liste est vide
while ( index == 0 ) {
try {
//attente passive
wait();
} catch ( InterruptedException ie ) {
ie.printStackTrace () ;
}
}
return tab [ 0 ] ;
}
}
Re: Question à propos de notify() et notifyall()
Il s'agit de faire coopérer des threads.
La méthode notify réveille un seul thread. Si plusieurs threads sont en attente, c'est celui qui a été suspendu le plus longtemps qui est réveillé. Lorque plusieurs threads sont en attente et qu'on veut tous les réveiller, il faut utiliser la méthode notifyAll.
La méthode notify réveille un seul thread. Si plusieurs threads sont en attente, c'est celui qui a été suspendu le plus longtemps qui est réveillé. Lorque plusieurs threads sont en attente et qu'on veut tous les réveiller, il faut utiliser la méthode notifyAll.
Houda- Modérateur
- Messages : 9
Points : 5523
Réputation : 1
Date d'inscription : 01/05/2009
Age : 34
Re: Question à propos de notify() et notifyall()
merçi mes amies pour votre reponces j'ai bien compris la differences entre ces fonctions :
notify():il permat de reveiller un thread qui est endormi et aussi de debloquer un thread bloqué par wait();
notifyall():la méme fonction que notify() et en plus reveiller tous les threads endormi;
wait():permet de bloqué un threads ,et si une threds appelle wait() seara bloque jusqua l'appelle des 2 methodes notify() ou notifyall().
notify():il permat de reveiller un thread qui est endormi et aussi de debloquer un thread bloqué par wait();
notifyall():la méme fonction que notify() et en plus reveiller tous les threads endormi;
wait():permet de bloqué un threads ,et si une threds appelle wait() seara bloque jusqua l'appelle des 2 methodes notify() ou notifyall().
owenho- Modérateur
- Messages : 115
Points : 5744
Réputation : 4
Date d'inscription : 02/05/2009
Age : 34
Localisation : larache/rabat
Re: Question à propos de notify() et notifyall()
non pas encore parceque j'ai beacoups des questions à poser a monsieur maligno adios amigo?
owenho- Modérateur
- Messages : 115
Points : 5744
Réputation : 4
Date d'inscription : 02/05/2009
Age : 34
Localisation : larache/rabat
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|
Jeu 28 Nov - 8:07 par arsenepoutsi
» CCNA version 4 français
Dim 31 Mar - 15:15 par kadhouceeee
» Trés important " Livre exercices en langage C ( claude delannoy) "
Jeu 27 Sep - 16:31 par latifa oustouh
» Ulead VideoStudio 11.5.0157.2 Plus + Crack Collection
Jeu 26 Avr - 9:51 par miloduvi
» Langage IDL(Interface Definition Language)
Mar 27 Sep - 13:02 par Abdelkhalek Bakkari
» demande cours PHP
Jeu 2 Juin - 11:23 par elasriahmed
» exemple page web réaliser avec du html et JavaScript
Lun 30 Mai - 4:05 par ouh.rouchan.zakaria
» cours group2_ 2année 2011
Dim 20 Mar - 15:35 par El Maligno Angelo
» Cours : Infrastructures Réseaux 2003 Server
Mar 15 Fév - 6:55 par jettjackson
» cours officiel de CCNA 2
Mar 18 Jan - 13:53 par agares