使用ReadWriteLock模拟简单的缓存管理器
package thread.lock; import java.util.HashMap; import java.util.Map; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; /** * readLock 与 readLock 不互斥 * readLocak 与 writeLock 互斥 * writeLock 与 writeLock 互斥 */ public class CacheManager { private ReadWriteLock rwl = new ReentrantReadWriteLock(); private Map<String,Object> cache = new HashMap<String,Object>(); public Object getValue(String key) { return processCacheData(key); } protected Object processCacheData(String key) { rwl.readLock().lock(); Object obj = null; try { obj = cache.get(key); if(obj==null) { //Release read lock before acquiring write lock rwl.readLock().unlock(); rwl.writeLock().lock(); //check again if(obj==null) { obj = "get obj from somewhere"; } rwl.readLock().lock(); rwl.writeLock().unlock(); } } finally { rwl.readLock().unlock(); } return obj; } }
相关推荐
1. java.util.concurrent - Java 并发工具包 2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 ...
backport-util-concurrent-3.1.jar 和 geronimo-stax-api_1.0_spec-1.0.1.jar 复制到 MyEclipse 6.5\eclipse\plugins\Axis2_Codegen_Wizard_1.3.0\lib 文件夹下。 (3).注册此 jar 包: 修改MyEclipse 6.5\eclipse...
标签:atlassian-util-concurrent-0.0.12.jar.zip,atlassian,util,concurrent,0.0.12,jar.zip包下载,依赖包
- copy %AXIS2_HOME%\lib\backport-util-concurrent-3.1.jar 到%ECLIPSE_HOME%\plugins\Axis2_Codegen_Wizard_1.3.0\lib - 注册此 jar 包: 編輯 %ECLIPSE_HOME%\plugins\Axis2_Codegen_Wizard_1.3.0\plugin.xml , ...
java.util.concurrent - Java 并发工具包 2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 ...
Tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError),内附解决方案!
java并发工具包 java.util.concurrent中文版-带书签版
backport-util-concurrent.jarbackport-util-concurrent.jarbackport-util-concurrent.jar
java.util.concurrent系列文章(1) java.util.concurrent系列文章(1) java.util.concurrent系列文章(1) java.util.concurrent系列文章(1)
在Eclipse3.5用Axis2中创建wsdl文件时,在最后一步出现如下错误: An error ocCurred while ...解决用到的jar包,两个jar包在backport-util-concurrent-3.1.jar和geronimo-stax-api_1.0_spec-1.0.1.jar.zip的压缩文件中
java.util.concurrent-多线程框架
java.util.concurrent总体概览图。 收取资源分3分。需要的同学可以下载一下。 java.util.concurrent主要包括5个部分executor,colletions,locks,atomic,tools。 该图详细的列举了并发包下面的结构,包含所有接口和...
1. java.util.concurrent - Java 并发工具包 2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 ...
apr-util-1.3.9-1.el5.i386.rpm apr-util-devel-1.3.9-1.el5.i386.rpm apr-util-ldap-1.3.9-1.el5.i386.rpm libxslt-python-1.1.17-2.el5_2.2.i386.rpm system-config-httpd-1.3.3.3-1.el5.noarch.rpm
java并发工具包 java.util.concurrent中文版pdf
JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecutor)使用