、
1、Cache
import java.util.Date;
import com.opensymphony.oscache.base.NeedsRefreshException;
import com.opensymphony.oscache.general.GeneralCacheAdministrator;
public class BaseCache extends GeneralCacheAdministrator {
private int refreshPeriod; // ( );
private String keyPrefix; // ;
private static final long serialVersionUID = -4397192926052141162L;
public BaseCache(String keyPrefix,int refreshPeriod){
super();
this.keyPrefix = keyPrefix;
this.refreshPeriod = refreshPeriod;
}
// ;
public void put(String key,Object value){
this.putInCache(this.keyPrefix+"_"+key,value);
}
// ;
public void remove(String key){
this.flushEntry(this.keyPrefix+"_"+key);
}
// ;
public void removeAll(Date date){
this.flushAll(date);
}
public void removeAll(){
this.flushAll();
}
// ;
public Object get(String key) throws Exception{
try{
returnthis.getFromCache(this.keyPrefix+"_"+key,this.refreshPeriod);
} catch (NeedsRefreshException e) {
this.cancelUpdate(this.keyPrefix+"_"+key);
throw e;
}
}
}
2、Cache
public class CacheManager {
private BaseCache newsCache;
private static CacheManager instance;
private static Object lock = new Object();
private CacheManager() {
// , BaseCache ;
newsCache = new BaseCache("news",120);
}
public static CacheManager getInstance(){
if (instance == null){
synchronized( lock ){
if (instance == null){
instance = new CacheManager();
}
}
}
return instance;
}
public void putUser(User news) { newsCache.put(news.getId()+"",news); }
public void removeUser(String newsID) { newsCache.remove(newsID); }
public User getUser(int newsID) {
try {
return (User) newsCache.get(newsID+"");
} catch (Exception e) {
System.out.println("getNews>>newsID["+newsID+"]>>"+e.getMessage());
User news = new User(newsID);
this.putUser(news);
return news;
}
}
public void removeAllNews() {
newsCache.removeAll();
}
}
3、 Bean
public class User {
private int id;
private String name;
private String sex;
private int age;
private Date accessTime; public User(int id) {
super();
this.id = id;
this.accessTime = new Date(System.currentTimeMillis());
}
public String toString() {
return "User info is : id=" + id + " accessTime="
+ accessTime.toString();
}
public User(String name, String sex, int age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
}
public User() {
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Date getAccessTime() {
return accessTime;
}
public void setAccessTime(Date accessTime) {
this.accessTime = accessTime;
}
}
4、
public class TestObjectCache {
public static void main(String[] args) {
CacheManager cm=CacheManager.getInstance();
TestObjectCache test=new TestObjectCache();
test.print(cm);
}
public void print(CacheManager cm){
User user=null;
for (int i = 0; i < 1000; i++) {
user=cm.getUser(100);
System.out.println("<<"+i+">>: "+user);
if(i==10){
// id
cm.removeUser(100+"");
}
if(i==20){
//
cm.removeAllNews();
}
//
try {
Thread.sleep(30000);
} catch (Exception e) {
}
}
}
}