Zdravím, řešení problému je přečíst si JavaDoc k třídě java.lang.Thread. Metodou interrupt() přerušíte běh vlákna, což dělá přesně to, co popisujete. Metoda pro probuzení vlákna se jmenuje resume(), je deprevated a v dokumentaci je napsáno, jak uspání a probuzení udělat správně.
21.8.07, Martin Jedlička <[EMAIL PROTECTED]>: > Zdravim, > mam takovy problem s vlaknem. Mam nize uvedene vlakno, ktere po startu > spustim s m_konec nastavenym na true, takze jde vlakno hned do spanku. > Coz je dobre. Potom vlakno probudim metodou interrunt() a nastavim > m_konec na false. V teto chvili ale chci, aby vlakno pokracovalo a > provadel se cyklus do-while, ve kterem mam hlidani interrupted(). Toto > hlidani tam mam z duvodu, kdy potrebuju predcasne ukoncit cele vlakno a > prave se nachazi v tomto cyklu. Problem ale je, ze pri prvnim spusteni, > kdyz provedu interrupt() tohoto vlakna (probuzeni), tak se prerusi hned > i ten cyklus, coz nechci. Nevite nekdo, jak to obejit? > > Potrebuju od vlakna: > - na zacatku uspat > - pote probudit a pokracovat cyklem do-while > - v pripade, ze je vlakno v cyklu do-while moct vlakno predcasne ukoncit > z mainu. > - toto vlakno je v nekonecnem cyklu a zastavuje se interruptem a > nastavenim m_konec na tru > > Diky moc. > > Martin > > > > class Vlakno extends Thread { > boolean dockal_se = false; > > public void run(){ > > while(true) { > > if(m_konec) { > try { > Thread.sleep(dlouhy_cas); > } catch (InterruptedException ex) { > System.out.println("probuzeno"); > } > } > > do { > if (interrupted()) { > return; > } > > // cekani na neco..napr. na nastaveni nejake synch. > glob. promenne v jinem vlakne > > } while(dockal_se); > } > } > } > -- Filip Jirsák [EMAIL PROTECTED]