1. 程式人生 > >Java多執行緒--重入鎖的實現原理

Java多執行緒--重入鎖的實現原理

  1. protectedfinalboolean tryRelease(int releases) {  
  2.             int c = getState() - releases;  
  3.             if (Thread.currentThread() != getExclusiveOwnerThread())  
  4.                 thrownew IllegalMonitorStateException();  
  5.             boolean free = false;  
  6.             if (c == 0) {  
  7.                 free = true
    ;  
  8.                 setExclusiveOwnerThread(null);  
  9.             }  
  10.             setState(c);  
  11.             return free;  
  12.         }  

如果該鎖被獲取了n次,那麼前(n-1)次tryRelease方法必須返回false,而只有同步狀態完全釋放了,才能返回true。可以看出,該方法只有在同步狀態為0的時候才會返回true,並將佔有執行緒設定為null,表示釋放成功。