View Single Post
Old 20-07-2011, 18:32   #1
starfred
Senior Member
 
Iscritto dal: Jul 2011
Messaggi: 381
[JAVA] Domanda ReentrantLock

Vengo subito al dunque:
Ho una classe dove eseguo (pseudocodice)

class sem{
ReentrantLock lock;
...

void blocca(){
....
lock.lock();
...

}

void sblocca(){
....
lock.unlock();
...

}
}

il problema è che, poiché la classe è condivisa da più thread, quando fanno la unlock viene sollevata l'eccezione

java.lang.IllegalMonitorStateException
at java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(ReentrantLock.java:127)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1175)
at java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:431)

Da quel che ho capito il problema nasce dal fatto che il thread che ha eseguito la lock non è quello che esegue la unlock, almeno così io ho capito.
Come faccio a risolvere?

ciao e grazie
__________________
Concluso positivamente con: Kamzata, Ducati82, Arus, TheLastRemnant, ghost driver, alexbull1, DanieleRC5, XatiX
starfred è offline   Rispondi citando il messaggio o parte di esso