Threads Erklärung ReentrantLock

  • Themenstarter Themenstarter SSorg
  • Beginndatum Beginndatum
S

SSorg

Gast
Hallo,
was ein Lock ist weiß ich. Jedoch verstehe ich einen Satz zum ReentrantLock nicht so ganz:
"Reentranz bedeutet bei Locks, dass ein Prozess, der ein Lock hält, dieses selbst wieder locken darf, ohne zu blockieren."
Kann mir jemand erklären, was das genau bedeutet oder mir ein kleines Beispiel geben?

Danke & Grüße
 
Reentrant bedeutet, wenn einem Thread ein Lock gehört darf dieser eine gesperrte Methode wieder aufrufen. Kleines Beispiel:

Java:
public void foo(int bar){
   try{
      lock.lock();
      if(bar > 0){
         foo(bar--);
      }
   }finally{
      lock.unlock();
   }
}

Ein Thread A ruft diese Methode auf, und sperrt das Lock. Nun ruft er die Methode
Code:
foo(bar--)
rekusiv auf. Da dieser Thread beim ersten Aufruf das lock gesperrt hat, kann er die Methode lock.lock(); pasieren ohne zu warten. Ein Thread B muss warten bis Thread A fertig ist.
 

Neue Themen


Zurück
Oben