读写锁,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();
		}
		
		
	}
	
}

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