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);
}
}
}