讀寫鎖,ReentrantReadWriteLock

讀寫鎖是爲了減少讀操作的互斥,提高執行效率。
同步具體表現爲

  • 讀讀不互斥
  • 讀寫互斥
  • 寫寫互斥

以下是一個基本的使用示例:

package multhread;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantReadWriteLock;

public class ReadWriteLockDemo{
	
	private static ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
	
	//讀鎖
	private static Lock readLock = lock.readLock();
	
	//寫鎖
	private static Lock writeLock = lock.writeLock();

	
	public static void read() {
		try {
			readLock.lock();
			Thread.sleep(1000);	
		} catch(Exception e) {
			e.printStackTrace();
		} finally {
			readLock.unlock();
		}
	}

	public static void write() {
		try {
			writeLock.lock();
			Thread.sleep(1000);	
		} catch(Exception e) {
			e.printStackTrace();
		} finally {
			writeLock.unlock();
		}	
	}

	
	
	
	public static void main(String[] args) {
		
		
		Runnable readThread = new Runnable () {
			public void run() {
				read();
			}
		};
		
		Runnable writeThread = new Runnable () {
			public void run() {
				write();
			}
		};
		
		//讀操作不互斥,很快就能結束
		for (int i = 0; i < 10; i++) {
			new Thread(readThread).start();
		}
		
		//寫操作互斥,需要逐個線程執行,比較慢
		for (int i = 0; i < 10; i++) {
			new Thread(writeThread).start();
		}
		
		
	}
	
}

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