java多线程学习10-使用ReentrantReadWriteLock的一个例子
2017-04-10 23:02
736 查看
package com.cwj.test410; import java.util.HashMap; import java.util.Map; import java.util.concurrent.locks.ReentrantReadWriteLock; public class ReadWriteTest { private final static Map<String, Object> map = new HashMap<String, Object>();// 假设数据缓存 private final static ReentrantReadWriteLock readWriteLock = new ReentrantReadWriteLock(); public static void main(String[] args) { for (int i = 0; i < 1000000; i++) { System.out.println(readWrite(i + "hha")); } } public static Object readWrite(String id) { Object value = null; readWriteLock.readLock().lock();// 开启读锁 try { value = map.get(id); if (value == null) { readWriteLock.readLock().unlock(); readWriteLock.writeLock().lock(); try { if (value == null) { value = "aaa"; map.put(id, value); } } finally { readWriteLock.writeLock().unlock(); } readWriteLock.readLock().lock(); } } catch (Exception e) { } finally { readWriteLock.readLock().unlock(); } return value; } }
相关文章推荐
- JAVA多线程学习之ReentrantReadWriteLock
- java多线程学习之ReentrantReadWriteLock(二)
- java多线程学习之ReentrantReadWriteLock(一)
- java多线程学习笔记——读写锁(ReentrantReadWriteLock)
- java 多线程 ReentrantReadWriteLock 使用
- Java:多线程,线程同步,同步锁(Lock)的使用(ReentrantLock、ReentrantReadWriteLock)
- java多线程--ReentrantReadWriteLock的使用
- Java:多线程,线程同步,同步锁(Lock)的使用(ReentrantLock、ReentrantReadWriteLock)
- Java多线程学习笔记3——ReentranLock和ReentrantReadWriteLock
- JAVA多线程之——读写锁 ReentrantReadWriteLock
- JAVA多线程之——读写锁 ReentrantReadWriteLock
- java多线程基础---synchronized与ReentrantReadWriteLock的介绍与比较
- JAVA多线程之——读写锁 ReentrantReadWriteLock
- Java多线程——锁(Synchronized、Lock、ReentrantLock、ReadWriteLock、ReentrantReadWriteLock)
- JAVA多线程之——读写锁 ReentrantReadWriteLock
- java多线程:并发包中ReentrantReadWriteLock读写锁的原理
- JAVA多线程之——读写锁 ReentrantReadWriteLock
- JAVA多线程之——读写锁 ReentrantReadWriteLock
- java 中 ReentrantReadWriteLock的读锁和写锁的使用
- Java多线程(十)之ReentrantReadWriteLock深入分析