java简单实现一个缓存_java简单实现缓存的三种方法
package com.tb.test;
import java.util.HashMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class CachedTest {
// 第一種方法 用hashmap存 然后加鎖get方法
// private HashMap cached = new HashMap();
//
// public synchronized Object get(String user){
//Object value=cached.get(user);
// if( value== null){
//
// value ="sss"; //實際上是從數(shù)據(jù)庫中讀取
// cached.put(user, value);
// }
//
// return value;
// }
// 第二種方法是用ConcurrentHashMap
// private ConcurrentHashMap cached= new
// ConcurrentHashMap();
//
// public Object get(String user){
//Object value=cached.get(user);
// if(value == null){
//
// value ="sss"; //實際上是從數(shù)據(jù)庫中讀取
// cached.put(user, value);
// }
//
// return value;
//
//
// }
// 第三種 用hashmap 加讀寫鎖
private HashMap cached = new HashMap();
private ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
public Object get(String user) {
readWriteLock.readLock().lock();
Object value = null;
try {
value = cached.get(user);
if ( value == null) {
readWriteLock.readLock().unlock();
readWriteLock.writeLock().lock();
try {
if(value == null){
value = "aa"; // 實際上從數(shù)據(jù)庫讀取
cached.put(user, value);
}
} finally {
readWriteLock.writeLock().unlock();
}
readWriteLock.readLock().lock();
}
} finally {
readWriteLock.readLock().unlock();
}
return value;
}
}
總結
以上是生活随笔為你收集整理的java简单实现一个缓存_java简单实现缓存的三种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 伪类选择器的用途
- 下一篇: 免费字典api ,查询汉字完整信息