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]

Odpovedet emailem