用锁实现缓存机制
来源:互联网 发布:twostepsfromhell知乎 编辑:程序博客网 时间:2024/06/06 02:32
package test1;import java.util.HashMap;import java.util.Map;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;/** * 通过锁,实现缓存机制 * 伪代码 * @author Administrator * */public class CatchUsedLock {public static void main(String[] args) {}private Map<String, Object> map = new HashMap<String, Object>();// 此方法,多个线程进来,会多次操作数据库public void getData1 (String key) {if (map.get(key) == null) {map.put(key, "到数据库中取相关数值");}}// 此方法在读的时候被互斥,效率不高,按需求,只需要在写的时候互斥public synchronized void getData2 (String key) {if (map.get(key) == null) {map.put(key, "到数据库中取相关数值");}}// 应使用此方法private ReadWriteLock lock = new ReentrantReadWriteLock();public synchronized void getData3 (String key) {try {lock.readLock().lock();Object val = map.get(key);if (val == null) {lock.readLock().unlock();lock.writeLock().lock();// 此处还需再判断一次,防止当多个线程都被阻塞在lock.writeLock().lock();// 然后一个线程从数据库中取值后,走完,解锁,另一个线程进来发现是空的,又走一次数据库。val = map.get(key);if (val == null) {val = "到数据库中取相关数值";map.put(key, val);}lock.writeLock().unlock();lock.readLock().lock();}} finally {lock.readLock().unlock();}}}
阅读全文
0 0
- 用锁实现缓存机制
- 用Java实现多种缓存机制
- 如何实现缓存机制?
- Java 实现缓存机制
- SpringMvc Ehcache 实现缓存机制
- Android 实现数据缓存机制
- Android 缓存机制与实现
- Android 简单实现缓存机制
- hibernate的缓存机制是用什么方法实现的
- hibernate的缓存机制是用什么方法实现的
- 用hashmap来模拟缓存实现的机制
- lucene的缓存机制和实现方案
- Android 利用缓存机制实现文件下载
- Android 利用缓存机制实现文件下载
- lucene的缓存机制和实现方案
- Java数据缓存实现的核心机制
- java实现简单的缓存机制
- Java 日志缓存机制的实现
- Reserved-8
- 学习:常用的数据适配器之PageAdapter
- 用Lock和Condition,实现主线程执行5次,子线程再执行10次,孙线程执行15次,如此反复5次
- Reserved-9
- jsp页面练习
- 用锁实现缓存机制
- Reserved-10
- 通过semaphore信号灯,开启多个线程,但只并发3个线程
- Reserved-11
- micropython之动手搭建自己的MQTT服务器并实现通信(点亮led)
- 每隔一秒打印一次日志,共16秒打印完,加4个线程修改程序,使之4秒打印完
- 122
- 基于ArrayBlockingQueue的生产者和消费者
- 222