这篇实例中有四个类,分别为

CacheItem 缓存实体类
CachePool 缓存池
Student 学生实体类
MainTest 主测试类
其中,缓存实体类CacheItem 中存放管理学生实体对象Student ,缓存实体类CacheItem 存放在缓存池CachePool 中,MainTest 主要负责整体的测试工作。
缓存实体类
package com.paic.zhangqi.cache;
import java.util.Date;
/**
* 缓存实体
* @author ZHANGQI947
*/
public class CacheItem {
// 创建缓存时间
private Date createTime = new Date();
// 缓存期满时间
private long expireTime = 1;
// 缓存实体
private Object entity;
public CacheItem(Object obj, long expires) {
this.entity = obj;
this.expireTime = expires;
}
// 判断缓存是否超时
public boolean isExpired() {
return (expireTime != -1 && new Date().getTime() - createTime.getTime() > expireTime);
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Object getEntity() {
return entity;
}
public void setEntity(Object entity) {
this.entity = entity;
}
public long getExpireTime() {
return expireTime;
}
public void setExpireTime(long expireTime) {
this.expireTime = expireTime;
}
}
缓存池CachePool
package com.paic.zhangqi.cache;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 缓存池
* @author Administrator
*/
public class CachePool {
// 缓存池唯一实例
private static CachePool instance;
// 缓存Map
private static Map<String, Object> cacheItems;
private CachePool() {
cacheItems = new HashMap<String, Object>();
}
/**
* 获取唯一的实例
* @return instance
*/
public synchronized static CachePool getInstance() {
if (instance == null) {
instance = new CachePool();
}
return instance;
}
/**
* 清除所有的Item缓存
*/
public synchronized void clearAllItems() {
cacheItems.clear();
}
/**
* 获取缓存实例
* @param name 缓存名称
* @return 缓存实例
*/
public synchronized Object getCacheItem(String name) {
if (!cacheItems.containsKey(name)) {
return null;
}
CacheItem cacheItem = (CacheItem) cacheItems.get(name);
if (cacheItem.isExpired()) {
return null;
}
return cacheItem.getEntity();
}
/**
* 存放缓存信息
* @param name 名称
* @param obj 实例对象
* @param expires 超时时长
*/
public synchronized void putCacheItem(String name, Object obj, long expires) {
// 判断该对象是否在在缓存池,不在直接put
if (!cacheItems.containsKey(name)) {
cacheItems.put(name, new CacheItem(obj, expires));
}
// 获取缓存池中对象,更新对象信息
CacheItem cacheItem = (CacheItem) cacheItems.get(name);
cacheItem.setCreateTime(new Date());
cacheItem.setEntity(obj);
cacheItem.setExpireTime(expires);
}
/**
* 移除缓存数据
* @param name
*/
public synchronized void removeCacheItem(String name) {
if (!cacheItems.containsKey(name)) {
return ;
}
cacheItems.remove(name);
}
/**
* 获取缓存数据的数量
* @return
*/
public int getSize() {
return cacheItems.size();
}
}
学生类Student
package com.paic.zhangqi.cache;
/**
* 学生类
* @author Administrator
*/
public class Student {
private String name;
private String id;
private int age;
private int sal;
public Student() {
}
public Student(String name, String id, int age, int sal) {
this.name = name;
this.id = id;
this.age = age;
this.sal = sal;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getSal() {
return sal;
}
public void setSal(int sal) {
this.sal = sal;
}
}
主测试类MainTest
package com.paic.zhangqi.cache;
/**
* 主测试类
* @author ZHANGQI947
*/
public class MainTest {
/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
// 获取缓存池
CachePool cachePool = CachePool.getInstance();
Student stu1 = new Student("l1", "stu001", 25, 40);
Student stu2 = new Student("l2", "stu002", 25, 40);
Student stu3 = new Student("l3", "stu003", 25, 40);
Student stu4 = new Student("l4", "stu004", 25, 40);
cachePool.putCacheItem("001", stu1, 122222);
cachePool.putCacheItem("002", stu2, 10);
cachePool.putCacheItem("003", stu3, 360002);
cachePool.putCacheItem("004", stu4, 1222222);
// 设置线程休眠,其中002对象会超时
Thread.sleep(200);
Student stu001 = (Student) cachePool.getCacheItem("001");
if (null != stu001) {
System.out.println(stu001.getName());
}
// 由于超时,这里取出的002对象为null
Student stu002 = (Student) cachePool.getCacheItem("002");
if (null != stu002) {
System.out.println(stu002.getName());
}
// 获取打印缓存池中对象数量
int cacheSize = cachePool.getSize();
System.out.println(cacheSize);
// 删除对象002
cachePool.removeCacheItem("002");
// 打印缓存池数量
cacheSize = cachePool.getSize();
System.out.println(cacheSize);
}
}
测试结果
l1
4
3
希望本篇文章内容对您有所帮助
# Java缓存池代码实例
# Java缓存代码实例
# Java缓存
# Java本地缓存的实现代码
# Java中LocalCache本地缓存实现代码
# Java客户端利用Jedis操作redis缓存示例代码
# java中对Redis的缓存进行操作的示例代码
# Java代码读取文件缓存问题解决
# Java基于LoadingCache实现本地缓存的示例代码
# java性能优化之代码缓存优化
# 实体类
# 池中
# 放在
# 中有
# 分别为
# 这篇
# 对您
# 时长
# 移除
# amp
# return
# getTime
# void
# getCreateTime
# gt
# entity
# Object
# expireTime
# obj
# isExpired
相关文章:
模具网站制作流程,如何找模具客户?
如何访问已购建站主机并解决登录问题?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
宝塔新建站点报错如何解决?
网站制作企业,网站的banner和导航栏是指什么?
建站主机选哪种环境更利于SEO优化?
如何高效配置香港服务器实现快速建站?
如何使用Golang table-driven基准测试_多组数据测量函数效率
学校为何禁止电信移动建设网站?
公司网站制作价格怎么算,公司办个官网需要多少钱?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
大连网站设计制作招聘信息,大连投诉网站有哪些?
如何通过山东自助建站平台快速注册域名?
如何配置支付宝与微信支付功能?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
建站主机选购指南:核心配置优化与品牌推荐方案
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
,柠檬视频怎样兑换vip?
如何快速搭建响应式可视化网站?
教程网站设计制作软件,怎么创建自己的一个网站?
建站之星安装提示数据库无法连接如何解决?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
如何高效搭建专业期货交易平台网站?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
制作网页的网站有哪些,电脑上怎么做网页?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
建站主机选择指南:服务器配置与SEO优化实战技巧
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
Thinkphp 中 distinct 的用法解析
宁波自助建站系统如何快速打造专业企业网站?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
高端建站三要素:定制模板、企业官网与响应式设计优化
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
山东云建站价格为何差异显著?
如何在云主机上快速搭建多站点网站?
制作网站的模板软件,网站怎么建设?
建站之星后台密码遗忘?如何快速找回?
如何选择CMS系统实现快速建站与SEO优化?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
建站之星CMS五站合一模板配置与SEO优化指南
制作证书网站有哪些,全国城建培训中心证书查询官网?
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
建站之星代理如何优化在线客服效率?
如何选择适合PHP云建站的开源框架?
如何制作网站标识牌,动态网站如何制作(教程)?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
建站之星安装步骤有哪些常见问题?
*请认真填写需求信息,我们会在24小时内与您取得联系。