[Applet+Threads] Pause et resume qui fonctionne pas
Salut à tous,
Je voudrais réaliser une application basique avec 2 threads: 1 producteur, 1 consommateur.
Je lance le producteur avec un bouton Start, idem pour le consommateur.
Et j'ai un bouton Pause pour chacun.
Sans utiliser les boutons pause, ca marche nikel. Dés que je touche un bouton pause ca plante: dans la console ca marche tjrs jusqu'a la fin du programme mais sur l'applet je peux plus rien toucher et ca plante méchant.
Voici la partie de mon applet qui s'ocuppe des boutons:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| public synchronized void actionPerformed(ActionEvent event) {
Object source = event.getSource();
if (source == b_startCustomer) {
System.out.println("b1");
newArrival.start();
}
else if (source == b_pauseCustomer) {
System.out.println("b2");
try {
if (arrivalsPaused==false){
newArrival.pauseArrivals();
arrivalsPaused=true;
}else{
newArrival.resumeArrivals();
arrivalsPaused=false;
}
} catch (InterruptedException e) {
// TODO Bloc catch auto-généré
e.printStackTrace();
}
}
else if (source == b_startTill) {
System.out.println("b3");
newDepartures.start();
}
else if (source == b_pauseTill) {
System.out.println("b4");
try {
if (departuresPaused==false){
newDepartures.pauseDepartures();
departuresPaused=true;
}else{
newDepartures.resumeDepartures();
departuresPaused=false;
}
} catch (InterruptedException e) {
// TODO Bloc catch auto-généré
e.printStackTrace();
}
};
repaint();
} |
Voici la partie s'occupe de la pause et resume dans le producteur (c pareil pour le consommateur):
Code:
1 2 3 4 5 6 7
| public synchronized void pauseArrivals() throws InterruptedException{
wait();
}
public synchronized void resumeArrivals(){
notify();
} |