我得到兩個線程固定數量,遂以100個任務,裏面我 使用的鎖,故意離開它解鎖,運行這段代碼的結果是 排序號碼從1到99,這讓我感到困惑: 1)是否因爲線程被重用,以便同一個線程可以多次獲取它? 2)如果是這樣,鎖不阻塞線程,它仍然可以重用?鎖守只是其範圍內的界限。 請糾正我。 public class LockTest {
public static volatile int a = 1
有時,我發現在某些Java代碼中,它們使用嵌套鎖來完成同步方法。代碼如下 // lock for appending state management
final Lock appendLock = new ReentrantLock();
// global lock for array read and write management
final ReadWriteLock array
按照java源代碼 ReentrantLock的鎖(非公平)如下。 public boolean lock(){
int c=getState();
if(c==0){
compareAndSetState(0,1);
}
}
//getState method
public int getState(){
return state;
我已經使用ReentrantLock和條件實施了生產者 - 消費者程序。如果我首先啓動生產者線程,我的實現運行沒有任何錯誤。但是,如果我首先啓動Consumer線程,則會收到IllegalMonitorStateException。請指出我的程序有什麼問題。 這是我的實現。 public class ProducerConsumerReentrantLock {
public stati