Hi also ich habe einen Thread, und eine GUI in der ich in Buttons den Thread starte und warten lassen will und wieder anwerfen. Allerdings ist der thread weder zu stoppen noch schlafenzulegen.
Wenn ich selbst einen Boolean erstelle welcher wenn true intern .stop() aufruft klappt es aber warum kann ich wait() stop() notify() nicht von außen aufrufen .... Was habe ich da nicht verstanden ?
Thread :
Buttons (dooferThread ist ausserhalb erstellt) :
Wenn ich selbst einen Boolean erstelle welcher wenn true intern .stop() aufruft klappt es aber warum kann ich wait() stop() notify() nicht von außen aufrufen .... Was habe ich da nicht verstanden ?
Thread :
Java:
public void run (){
for (int i=0;i<irgendwann;i++){
this.machezeug();
if (kontrolliertesBeenden)this.stop(); // Teil der funktionierenden Lösung
try
{
Thread.sleep(100);
}
catch (InterruptedException ie)
{
System.out.println("Exeption beim schlafen!");
}
}
}
Buttons (dooferThread ist ausserhalb erstellt) :
Java:
startSim = new JButton("Simulation starten");
getContentPane().add(startSim);
startSim.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dooferThread.start();
}
});
anhalten = new JButton("Simulation anhalten");
anhalten.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
refresher.cancel(true);
try {
fermenterThread.kontrolliertesBeenden=true; // Das funktioniert ist aber sicherlich nicht so gedacht das man sich die Methoden selbst reinhauen muss zum abbrechen
dooferThread.wait();
} catch (Exception ignore) {
System.out.println("Fehler, dies könnte ein Fehler sein.");
}
}
});