[Thread] Petite question sur notify() et wait()
Bonjour,
J'ai crée un Thread Main. Celui-ci devrais effectuee ces actions :
1° Charge LoginFrame
2° Affiche LoginFrame
3° Charge MenuFrame
4° Attend
5° Affiche MenuFrame
Mon but étant d'avoir un Objet User crée avant d'afficher MenuFrame.
J'avai essayé un flag qui se mettait à true une fois que l'utilisateur etait authentifie :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
public class Main extends Thread {
...
public static boolean flag = false;
...
// realisation des étapes 1 à 3
while(!flag){
try {
sleep(100);
System.out.println("Attente");
} catch (InterruptedException e) {
System.err.println("Thread Main : Impossible de mettre en attente.");
e.getClass();
e.printStackTrace();
}
}
} |
LoginFrame mettait flag à true une fois l'utilisateur authentifié.
Ca fonctionne mais n'est pas tres propre. Mieux vaut utiliser wait().
j'ai donc crée une méthode synchronisée :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
private synchronized void waitLogin() {
try {
while(true){
System.out.println("Attente");
wait();
}
System.out.println("Plus en attente");
} catch (InterruptedException ex){
System.err.println("Erreure dans l'attente");
ex.printStackTrace();
}
} |
j'apelle cette méthode à la place de ma boucle pour sleep, aprés les étapes 1 à 3.
Main est bien mis en attente Mais comment faire pour le réveiller depuis LoginFrame lorsque l'utilisateur est authentifié ?
Comment appeler notify() sur Main ?
Merci