[Java] Pozastavení skupiny vláken
Tvořím applet na kterém beží animace. Ta animace je tvorena dvemi vlakny, které jsou ve stejné skupine(ThreadGroup). Chtel bych animaci pozastavit a pak pokracovat dal. Coz lze udelat pomoci metod stop() a resume(). Pres appletViewer to funguje v pohode, ale kdyz to pustim pres webovy prohlizec tak se mi to po stisku pozastavit kousne a uz nejde pokracovat. Ted jsi nejsem jistej jestli tam muze dojit k deadlocku, kvuli pouziti deprecated metod. Jaká je jiná alternativa k pozastavení vlákna místo deprecated metody stop(). Kdyz pouziji tu deprecated metodu co se muze krome nestability stat? v dalsich verzich javy to nebude fungovat?
Re: [Java] Pozastavení skupiny vláken
odporucam v takychto pripadoch pozret do dokumentacie - vo vacsine pripadov je napisane preco je to deprecated a aj co miesto toho pouzit ... v tomto konkretnom pripade: http://java.sun.com/javase/6/docs/te...precation.html
Re: [Java] Pozastavení skupiny vláken
no neco jsem tam nasel tak to snad dam do kupy, ale nechapu proc to pres applet viewer bezi a ve firefoxu ne...
Re: [Java] Pozastavení skupiny vláken
Tak z toho co maj v dokumentaci moc moudrej nejsem.
jejich reseni vypada asi takto:
private volatile Thread blinker;
public void stop() {
blinker = null;
}
public void run() {
Thread thisThread = Thread.currentThread();
while (blinker == thisThread) {
try {
thisThread.sleep(interval);
} catch (InterruptedException e){
}
repaint();
}
}
to je sice pekny, ale kdyz budu vykraslovat animaci, dejme tomu semafor
public void run() {
Thread thisThread = Thread.currentThread();
while (blinker == thisThread) {
try {
thisThread.sleep(interval);
} catch (InterruptedException e){
}
nakresli(cervenou);
nakresli(oranzovou);
nakresli(zelenou);
}
}
pokud budu chtit semafor zastavit na oranzovy tak se mi to nepovede. Sice by doslo k zastaveni animace, ale po vykresleni zeleny. Coz je docela blbe... Jak mam zastavit thread prave tam kde ted je?