java動手實現讀寫鎖

基於synchronized實現讀寫鎖

昨天面試小米基礎平臺,面試官問了一個這樣的題目,讓我自己實現一個讀寫鎖,用lock實現。想了半天lock不會,最後改用synchronized實現

  •  讀寫鎖類的實現
  • 兩個變量read、write記錄讀鎖和寫鎖的個數
  • synchronized鎖會鎖住一個實例,同時只能等待一個方法執行完才能執行下一個方法操作。
class MyReadWriteLock{
	private volatile int read;
	private volatile int write;
	public MyReadWriteLock(){
		this.read = 0;
		this.write = 0;
	}
	public synchronized void readLock() throws InterruptedException{
		if(write>0){
			wait();
		}
		read++;
	}
	
	public synchronized void readUnLock(){
		read--;
		notifyAll();
	}
	
	public synchronized void writeLock() throws InterruptedException{
		if(read>0||write>0){
			wait();
		}
		write++;
	}
	
	public synchronized void writeUnLock(){
		write--;
		notifyAll();
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章