`
a67474506
  • 浏览: 14712 次
社区版块
存档分类
最新评论

使用ReadWriteLock实现模拟缓存

阅读更多

 

 

使用ReadWriteLock的读写锁 实现 模拟缓存的 功能

 

 

package cn.zto.lock;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;

//模仿缓存
public class CacheDateTest {
	
	ReadWriteLock rwl = new ReentrantReadWriteLock();
	Map<Object, Object> map = new HashMap<Object, Object>();
	
	public Object get(Object key){
		
		rwl.readLock().lock();
		
		Object value = null;
		boolean flag ;
		value = map.get(key);
		
		if (value == null) {
			flag = false;
			rwl.readLock().unlock();
			rwl.writeLock().lock();
			if (!flag) {
				value = " 初始化 ";
				map.put(key, value);
				flag = true;
			}
			rwl.writeLock().unlock();
			rwl.readLock().lock();
		}
		
		rwl.readLock().unlock();
		return value;
	}
	
}

 

 

 

 

 

 

分享到:
评论

相关推荐

    Mybatis-plus基于redis实现二级缓存过程解析

    在上面的代码中,我们使用了RedisTemplate来操作Redis缓存,并使用ReentrantReadWriteLock来实现读写锁,以确保缓存的线程安全。 最后,我们需要在Mapper接口中使用自定义的缓存管理类: ```java @Mapper public ...

    ReadWriteLock

    在Windows环境下,C++可以通过自定义实现或者使用系统提供的API来创建读写锁。在这个项目中,`ReadWriteLock.cpp` 和 `ReadWriteLock.h` 文件分别包含了读写锁的实现和接口定义。 读写锁的核心概念是允许多个读取者...

    ReadWriteLock的使用

    ReadWriteLock的使用,实际上由于ReadWriteLock是一个接口,所以实际使用的是ReentrantReadWriteLock子类。同时ReadWriteLock的使用其实也是比较简单的,就是读写的锁的使用以及注意事项而已。

    mybatis+redis缓存配置

    二级缓存需要显式地配置启用,并且可以通过自定义缓存实现来进行扩展。 本文重点介绍的是如何结合SpringMVC框架、MyBatis以及Redis实现一个高效的二级缓存机制。 #### 二、Redis作为二级缓存实现 Redis是一个开源...

    Java中的ReadWriteLock:深入解析与应用实践

    本文将详细介绍 ReadWriteLock 的工作原理、使用场景、以及如何在实际项目中应用它。 ReadWriteLock 是Java并发编程中一个强大的工具,它通过分离读锁和写锁,允许多个线程并发地读取共享数据,同时保证了写操作的...

    23 按需上锁—ReadWriteLock详解.pdf

    在实际应用中,ReadWriteLock常用于数据库连接池、缓存等读多写少的场景。需要注意的是,使用ReadWriteLock时,正确地管理和释放锁至关重要,避免出现死锁或资源泄漏的问题。此外,为了评估ReadWriteLock对性能的...

    Java本地缓存的实现代码

    可以使用ReadWriteLock来实现读写锁,以确保多线程并发环境下的安全性。 Private构造函数 LocalCache是工具类,使用私有构造函数强化不可实例化的能力。 LRUMap LRUMap是基于LinkedHashMap实现的LRU策略的map。...

    JAVA缓存技术深入了解

    此外,我们还需要考虑缓存的并发控制,如`ReadWriteLock`、`StampedLock`等,以及缓存穿透、缓存雪崩和缓存击穿等问题,这些问题在设计缓存时都需要进行预防和处理。 最后,对于大型系统,监控和度量缓存性能也至关...

    ReadWriteLock接口及其实现ReentrantReadWriteLock方法

    ReadWriteLock 接口及其实现 ReentrantReadWriteLock 方法 在 Java 并发编程中,锁机制是非常重要的一种同步机制,用于解决多线程之间的资源竞争问题。在 Java 中,有多种锁机制,如 ReentrantLock、...

    Java多线程之readwritelock读写分离的实现代码

    以下是一个使用ReadWriteLock实现读写分离的例子: ```java package com.bird.concursey.charpet3; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock...

    MyBatis缓存机制深度解剖[收集].pdf

    在并发读写场景下,MyBatis使用Java并发库中的ReadWriteLock(具体实现为ReentrantReadWriteLock),通过锁机制确保在写入缓存时的线程安全性。 执行流程大致如下: 1. 在Service层调用Mapper接口的方法。 2. ...

    homework-ReadWriteLock-KristampsW-main.zip

    - 数据库连接池、缓存系统等都是读写锁的经典应用场景。 6. **最佳实践**: - 获取锁时应尽可能选择读锁,除非需要修改共享资源。 - 使用完锁后,记得及时释放,避免死锁的发生。 - 注意锁的公平性和非公平性...

    Java LocalCache 本地缓存的实现实例

    为了保证线程安全,使用了ReadWriteLock来实现读写锁。读锁和写锁是分离的,以便在读取和写入操作时,能够正确地加锁和释放锁。 使用场景 Java LocalCache 本地缓存的实现实例主要应用于Java应用中,对于访问频率...

    同步 读写锁 readwriteLock

    在这个示例中,主线程首先初始化一个全局读写锁,然后创建读线程和写线程来模拟实际的应用场景。读线程尝试获取读锁进行读操作,而写线程则尝试获取写锁进行写操作。这样可以有效地管理共享资源的访问,提高程序的...

    rxcache:LRU缓存库并支持Rx

    简介Library项目地址: RxCache是一个本地缓存功能库,采用Rxjava+DiskLruCache来实现,线程安全内部采用ReadWriteLock机制防止频繁读写缓存造成的异常,可以独立使用,单独用RxCache来存储数据。也可以采用...

    spring-boot-cache.rar

    Spring Boot 提供了并发缓存策略,比如使用 `ReadWriteLock` 来处理读写操作,确保数据一致性。 5. **缓存穿透与缓存击穿**:这两个是缓存系统中常见的问题。缓存穿透是指查询一个不存在的数据,导致数据库被频繁...

    java并发编程专题(七)----(JUC)ReadWriteLock的用法

    主要介绍了java ReadWriteLock的用法,文中讲解非常详细,示例代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下

    Java语言ReadWriteLock特性实例测试

    4. **可重入性**:Java中的实现类ReentrantReadWriteLock支持锁的可重入性,即一个线程在已获得读锁或写锁的情况下可以再次获取读锁或写锁,这在某些情况下是必要的。 **举例说明:** 假设有一个共享数据,线程1先...

    基于JDK源码解析Java领域中的并发锁之设计与实现.pdf

    本文将基于JDK源码解析Java领域中的并发锁,探讨AQS基础同步器、LockSupport、Condition接口、Lock接口、ReadWriteLock接口以及自定义API操作的设计与实现。 一、AQS(AbstractQueuedSynchronizer)基础同步器的...

Global site tag (gtag.js) - Google Analytics