[ vanja13 @ 03.12.2008. 11:35 ] @
Trebam da iskomentarisem rad dole navedenog programa,koji ima i rezultat naveden ispod,ali bas taj rezultat mi nikako ne ide u glavu....Zaista sam pocetnik i drago bi mi bilo kad bi mi iko mogao objasniti zasto je u rezultatu navedeno da se Prva nit izvrsava i dalje kad je po meni vec uspavana preko druge nitti?????

// Primer NTZ2: Napisati 2 niti tako da jedna od niti u toku svog izvrsavanja uspava
// drugu nit.

class NTZ2 extends Thread
{
NTZ2(NTZ2 n1,String ime)
{ super(ime);
n = n1;
start();
}

public void run()
{ while(signal) {if (getName().equals("prva")== true)
System.out.println("Prva nit se izvrsava!!!");
if (getName().equals("druga")== true)
System.out.println("Druga nit se izvrsava!!!");
}


}

void promeni() {signal = false;}
void uspavaj()throws InterruptedException
{ System.out.println("Uspavana je prva nit");
n.sleep(10);
System.out.println("Probudjena je prva nit");
}

public static void main(String args[]) throws InterruptedException
{ NTZ2 n1 = new NTZ2(null,"prva");
NTZ2 n2 = new NTZ2(n1,"druga");
n2.uspavaj();
n1.promeni();
n2.promeni();
}

boolean signal = true;
NTZ2 n;
}

// Rezultat:
// Upavana je prva nit
// Prva nit se izvrsava
// Prva nit se izvrsava
// Prva nit se izvrsava
// Prva nit se izvrsava
// Prva nit se izvrsava
// Prva nit se izvrsava
// Prva nit se izvrsava
// Probudjena je prva nit
[ Astral Projection @ 03.12.2008. 12:11 ] @
//ovo je rezultat kod mene:
Code:
Prva nit se izvrsava!!!
* ovo je pocelo da se izvršava kad si inicijalizovao objekat n1 (start() u konstruktoru)
(..............)
Code:
Druga nit se izvrsava!!!
* i ovo ti je počelo kad si inicijlizovao drugu nit (n2)
(..............)
Code:
Uspavana je je prva nit
* ovdje si pozvao n2.uspavaj(), i nit ti spava 10 milisekundi ovdje treba da piše da se uspavala druga nit nego si ti naveo da println izbaca uvijek ovaj tekst. Prva nastavlja da se izvršava:
Code:
Prva nit se izvrsava!!!
* prva nit u međuvremenu nastavlja da se izvršava
(..........)
Code:
Druga nit se izvrsava!!!
* druga nit se probudila i počela da se izvšava...
(........)
Code:
Probudjena je nit druga
* na kraju nekad piše ovo nekad piše da je prva nit nastavila da se izvršava posle ovoga.. pročitaj malo o sinhronizaciji (ključna riječ synchronized)
[ vanja13 @ 03.12.2008. 12:55 ] @
Nisam ja pisala kod vec sam dobila da ga objasnim.Kad pozovem n2.uspavaj ta metoda meni ne poziva metod za n2.sleep() vec n2.n.sleep();a n kod n2 niti je n1,tako da mi nije bas jasno kako se to uspava druga nit......Pri pokretanju zadatka ja ne dobijam bas ovaj rezultat pa mi nije onda nista jasno...
[ vanja13 @ 03.12.2008. 14:46 ] @
E sad da odgovorim sama na svoje postavljeno pitanje....
Thread.sleep() je static metod on ce uspavati nit koja se tada bude izvrsavala,bez obzira koja nit ga bude pozvala....
[ vanja13 @ 03.12.2008. 14:47 ] @
Internet je zakon....
da ne mislite da sam se zezala,nisam ovo do sad znala...