Witam to mój pierwszy post tutaj więc chciałem przywitać wszystkich. Cześć. Zaznaczam że nie mam dużej wiedzy programistycznej a na pewno nie w javie. Mam problem z zatrzymaniem wątku a raczej z jego ponownym uruchomieniem notify(). Potrzebuje żeby wątek wykonał pewną metodę potem żeby się wykonała animacja na interfejsie graficznym, i dopiero po tej animacji wątek kontynuował. Próbuję zrobić to dodaniem kolejnego wątku invokeAndWait oraz metody wait() i notify(). Niestety udaje mi się zatrzymać wątek ale już wznowić jego działania nie.
class Adresat implements Runnable{
private Skrzynka_Pocztowa skrzynka;
public Adresat(Skrzynka_Pocztowa skrzynka){
this.skrzynka=skrzynka;
}
public synchronized void run(){
//do{
for(int i=0; i<5; i++){
skrzynka.wydaj();
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
skrzynka.rysuj();
}
});
} catch (InvocationTargetException | InterruptedException e1) {
e1.printStackTrace();
}
try{ wait(); //Thread.sleep((int)(Math.random() * 100));
} catch(InterruptedException e) {}
System.out.println("po wait");
skrzynka.pokaz_stan();
//try { Thread.sleep((int)(Math.random() * 100));
// } catch(InterruptedException e) {}
}
}
}
public synchronized void rysuj()
{
System.out.print("dziaaaaaaaaaaaaaaaaaaaaaaaaaaaallllllllllllllllllaaaaaaaaaaaa");
ActionListener zadanie = new ActionListener() {
@Override
public synchronized void actionPerformed(ActionEvent evt) {
x++;
repaint();
System.out.println(x);
if(x==50){
x = -25;
notify();
timer.stop();
}
}
};
timer = new Timer(10, zadanie);
timer.start();
}