Výsledky 1 až 4 z 4

Téma: [Java] Pozastavení skupiny vláken

  1. #1

    Standardní [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?
    NTB MSI EX600, CPU Intel Core 2 Duo T5550@1,83Ghz, 2GB RAM, GF8400M-G 256MB, HDD 320GB...

  2. #2

    Standardní 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

  3. #3

    Standardní 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...
    NTB MSI EX600, CPU Intel Core 2 Duo T5550@1,83Ghz, 2GB RAM, GF8400M-G 256MB, HDD 320GB...

  4. #4

    Standardní 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?
    NTB MSI EX600, CPU Intel Core 2 Duo T5550@1,83Ghz, 2GB RAM, GF8400M-G 256MB, HDD 320GB...

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •