Java实现简单的缓存机制原理

Python07

Java实现简单的缓存机制原理,第1张

package qinbo hui

/*

设计思想来自-回钦波(qq: )

*/

public class CacheConfModel implements java io Serializable{

private long beginTime

private boolean isForever = false

private int durableTime

public long getBeginTime() {

return beginTime

}

public void setBeginTime(long beginTime) {

this beginTime = beginTime

}

public boolean isForever() {

return isForever

}

public void setForever(boolean isForever) {

this isForever = isForever

}

public int getDurableTime() {

return durableTime

}

public void setDurableTime(int durableTime) {

this durableTime = durableTime

}

}

package qinbo hui

import java util *

import test CacheConfModel

/*

设计思想来自-回钦波(qq: )

*/

public class CacheMgr {

private static Map cacheMap = new HashMap()

private static Map cacheConfMap = new HashMap()

private CacheMgr(){

}

private static CacheMgr cm = null

public static CacheMgr getInstance(){

if(cm==null){

cm = new CacheMgr()

Thread t = new ClearCache()

t start()

}

return cm

}

/**

* 增加缓存

* @param key

* @param value

* @param ccm 缓存对象

* @return

*/

public  boolean addCache(Object key Object value CacheConfModel ccm){

boolean flag = false

cacheMap put(key value)

cacheConfMap put(key ccm)

System out println( now addcache== +cacheMap size())

return true

}

/**

* 删除缓存

* @param key

* @return

*/

public  boolean removeCache(Object key){

cacheMap remove(key)

cacheConfMap remove(key)

System out println( now removeCache== +cacheMap size())

return true

}

/**

* 清除缓存的类

* @author wanglj

* 继承Thread线程类

*/

private static class ClearCache extends Thread{

public void run(){

while(true){

Set tempSet = new HashSet()

Set set = cacheConfMap keySet()

Iterator it = erator()

while(it hasNext()){

Object key = it next()

CacheConfModel ccm = (CacheConfModel)cacheConfMap get(key)

//比较是否需要清除

if(!ccm isForever()){

if((new Date() getTime() ccm getBeginTime())>= ccm getDurableTime()* * ){

//可以清除 先记录下来

tempSet add(key)

}

}

}

//真正清除

Iterator tempIt = erator()

while(tempIt hasNext()){

Object key = tempIt next()

cacheMap remove(key)

cacheConfMap remove(key)

}

System out println( now thread================>+cacheMap size())

//休息

try {

Thread sleep( * L)

} catch (InterruptedException e) {

// TODO Auto generated catch block

e printStackTrace()

}

}

}

}

lishixinzhi/Article/program/Java/hx/201311/25737

session最好少用,一般系统都用session来存储用户信息,session用多了对系统开销不好,缓存也尽量少用,要用的话都用在基本不会改变的数据上,不然会影响系统,如果经常改变的量,用了缓存,如:一个程序在用缓存中的数据,而另一个程序却在修改缓存的数据,那边程序就会出现不符合的数据了,如果回答对你有帮助,请把分给我吧,谢谢