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

java缓存器的编写

 
阅读更多

前一段学习过java当中readWriteLock的使用,运用所学编写一个缓存器。

package thread;

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

public class CacheTest {
	private Map<String, Object> cache = new HashMap<String, Object>();
	public static void main(String[] args) {
		
	}
	
	private ReadWriteLock rwl = new ReentrantReadWriteLock();
	/**
	 * 如果多个线程来读取缓存可以同时读取,但是写入缓存的必须是一个 
	 * @param key
	 * @return
	 */
	public Object getDate(String key) {
		rwl.readLock().lock();//线程加载读锁
		Object value = null;
		try {
			value = cache.get(key);
			if(value == null) {//如果缓存为空
				rwl.readLock().unlock();//释放读锁
				rwl.writeLock().lock();//加载写锁
				try {
					if(value == null) {//如果多个线程同时来写,则一个线程写成功了,另外写锁的线程不需要操作
						value = "查询数据库获取数据!";
						cache.put(key, value);//放入缓存
					}
				} finally {
					rwl.writeLock().unlock();//释放写锁
				}
				rwl.readLock().lock();//加上读锁
			}
		} finally {
			rwl.readLock().unlock();//释放读锁
		}
		return value;
	}
}

 以后对于读写锁有更多的应用,缓存是必不可少的。

分享到:
评论

相关推荐

    java缓存工具 SimpleCache_java_缓存_

    java 编写的缓存工具 SimpleCache。

    java缓存代码,tomcat JVM配置

    java代码编写缓存方法,tomcat内存配置,连接池设定

    java缓存工具SimpleCache.zip

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作! 1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。 3. 支持缓存数据分区规则...

    Android-一种用Java编写的Android强类型缓存GraphQL客户端

    一种用Java编写的Android强类型缓存GraphQL客户端

    高速缓存实现源码

    运用java语言实现了高速缓存,并在实现了不用缓存的对比,1000个线程并发时相差十倍的时间,10000个线程时相差四十倍的时间。

    spleen:Java缓存库

    脾Java缓存库Spleen是用Java编写的存储缓存库,它允许存储内存大小限制以及每个存储数据的超时限制。 脾脏提供两种存储类型,即使用简单线程或多线程删除的观察者。 简单的名称空间启动一个单独的线程来检查要删除的...

    JAVA上百实例源码以及开源项目

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    JAVA上百实例源码以及开源项目源代码

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    java开源包4

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包11

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包6

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包101

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包9

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    FileSystem:用Java从头开始编写的文件系统API的实现

    用Java从头开始编写的文件系统API的实现 首先编译类文件:filehandle.java FileBuffer.java FileServer.java fileSystemAPI.java FileSystemClientAPI.java testClient.java确保所有文件都在同一目录中。 首先通过...

    java开源包5

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包8

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包10

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    LilCache:用Java编写的轻量级缓存框架

    用Java编写的用于教育目的的轻量级缓存框架 API 此框架中提供了以下方法: /** * Get size of cache * * @return size of cache */ int getSize(); /** * Put a value into cache with a specified key * * @...

    java开源包1

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包3

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

Global site tag (gtag.js) - Google Analytics