Java缓存池代码实例详解
发布时间 - 2026-01-11 00:44:28 点击率:次这篇实例中有四个类,分别为

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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
浅谈javascript alert和confirm的美化
历史网站制作软件,华为如何找回被删除的网站?
如何在 Pandas 中基于一列条件计算另一列的分组均值
如何有效防御Web建站篡改攻击?
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
图册素材网站设计制作软件,图册的导出方式有几种?
如何在万网利用已有域名快速建站?
Swift中switch语句区间和元组模式匹配
如何快速启动建站代理加盟业务?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
Laravel如何使用.env文件管理环境变量?(最佳实践)
bing浏览器学术搜索入口_bing学术文献检索地址
Android利用动画实现背景逐渐变暗
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
Laravel模型事件有哪些_Laravel Model Event生命周期详解
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
如何用花生壳三步快速搭建专属网站?
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
如何在局域网内绑定自建网站域名?
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
如何批量查询域名的建站时间记录?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
Java解压缩zip - 解压缩多个文件或文件夹实例
黑客如何利用漏洞与弱口令入侵网站服务器?
如何在景安云服务器上绑定域名并配置虚拟主机?
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
长沙企业网站制作哪家好,长沙水业集团官方网站?
什么是javascript作用域_全局和局部作用域有什么区别?
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
Java类加载基本过程详细介绍
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
Laravel如何生成API文档?(Swagger/OpenAPI教程)
Laravel中的Facade(门面)到底是什么原理
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
如何用免费手机建站系统零基础打造专业网站?
手机网站制作与建设方案,手机网站如何建设?
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
北京的网站制作公司有哪些,哪个视频网站最好?
HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】

