9、读写锁:ReadWriteLock
读写分离:读写分离是一种思想。
之前讲的Lock是一个同步锁,它对资源的读和写,要么都锁住,要么都不锁,有的时候我们的资源,希望读的时候不锁,写的时候锁住,这样在安全的基础上能提高很大的效率。
我们希望锁只添加在需要的地方,如在写的时候,加锁,只允许一个线程去操作,读的时候不加锁,所有的线程都可以去读。
这样ReadWriteLock运营而生。
读锁(共享锁): 这个锁可以被多个线程持有!
写锁(独占锁):这个锁一次只能被一个线程占用!
不使用锁的情况下,示例代码如下:
package com.interview.concurrent.readwritelock;
import java.util.HashMap;
import java.util.Map;
/**
* @author yangxj
* @description 描述
* @date 2020/2/23 15:54
*/
public class ReadWriteLockDemo {
public static void main(String[] args) {
//不加锁
ResourcePool resourcePool = new ResourcePool();
//开启5个线程去写
for (int i = 1; i <= 5; i++) {
final int temp = i;
new Thread(() -> resourcePool.put(temp,temp),"写线程" + i).start();
}