[ mightymv @ 17.01.2006. 13:14 ] @
da li je dozvoljeno(moguce)
primeniti synchronized na statickoj promenljivoj neke klase,
i da li je moguce da se dva thread-a sinhronizuju na staticki clan koji je u sastavu neke od njih?
tj da li mogu da napisem:

Code:

class P extend Thread{
public static ls;

public void run(){
 while(true){
       synchronized(P.ls) {
      .................
       P.ls.notiffyAll();  <-----
     }
  }

}

class D extends Thread{

public void run(){
 while (true){
      synchronized(P.ls){
            while (P.ls ne ispuni neki uslov)
                 P.ls.wait();
             .....................
            }
 }
}




Mislim, kompajler ne prijavljuje gresku, ali mi se cini da zbog toga
imam problem posle sa izuzetkom "current thread not owner" na liniji notiffyAll(ls) u nekoj
implementaciji ovoga.


hvala.
[ _owl_ @ 17.01.2006. 14:39 ] @
Nisam bas siguran ali probaj:
Code:

...
synchronized(P.class) {
   ls.notiffyAll();
}
...

[ mightymv @ 17.01.2006. 16:48 ] @
kako je u stvari moguce da
u okviru bloka
Code:

synchronized(objekat) {
......
objekat.notifyAll();
}

bude ispaljen izuzetak IllegalMonitorStateException
kada sam usao u blok i uzeo katanac za taj objekat.
Kako je neki drugi trhread mogao da preuzme u medjuvremenu katanac za ovaj objekat?
izuzetno je bitno da ja ne zelim katanac na celu klasu, metodu... nego na odredjeni objekat.

sada mi se to desilo sa drugim kodom kod kojih nisu u pitanju staticki clanovi.