Java单例模式怎么利用HashMap实现缓存数据
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本文小编为大家详细介绍"Java单例模式怎么利用HashMap实现缓存数据",内容详细,步骤清晰,细节处理妥当,希望这篇"Java单例模式怎么利用HashMap实现缓存数据"文章能帮助大家解决疑惑,下
千家信息网最后更新 2026年11月03日Java单例模式怎么利用HashMap实现缓存数据
本文小编为大家详细介绍"Java单例模式怎么利用HashMap实现缓存数据",内容详细,步骤清晰,细节处理妥当,希望这篇"Java单例模式怎么利用HashMap实现缓存数据"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
一、单例模式是什么?
单例模式是一种对象创建模式,它用于产生一个对象的具体实例,它可以确保系统中一个类只产生一个实例。Java 里面实现的单例是一个虚拟机的范围,因为装载类的功能是虚拟机的,所以一个虚拟机在通过自己的 ClassLoad 装载实现单例类的时候就会创建一个类的实例。在 Java 语言中,这样的行为能带来两大好处:
1.对于频繁使用的对象,可以省略创建对象所花费的时间,这对于那些重量级对象而言,是非常可观的一笔系统开销;
2.由于 new 操作的次数减少,因而对系统内存的使用频率也会降低,这将减轻 GC 压力,缩短 GC 停顿时间。
因此对于系统的关键组件和被频繁使用的对象,使用单例模式可以有效地改善系统的性能。单例模式的核心在于通过一个接口返回唯一的对象实例。首要的问题就是要把创建实例的权限收回来,让类自身来负责自己类的实例的创建工作,然后由这个类来提供外部可以访问这个类实例的方法
二、单例模式结合HashMap实现缓存
1.测试结果
2.代码如下
JavaBean
public class People { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "People{" + "name='" + name + '\'' + ", age=" + age + '}'; }}缓存工具类
import java.util.HashMap;import java.util.Map;public class CacheSingletonUtil { private static volatile CacheSingletonUtil cacheSingletonUtil; private static Map cacheSingletonMap; public static final String PEOPLE_LIST_KEY = "peopleList"; private CacheSingletonUtil(){ cacheSingletonMap = new HashMap(); } /* * 单例模式有两种类型 * 懒汉式:在真正需要使用对象时才去创建该单例类对象 * 饿汉式:在类加载时已经创建好该单例对象,等待被程序使用 */ // 懒汉式单例模式 public static CacheSingletonUtil getInstance(){ if (cacheSingletonUtil == null){// 线程A和线程B同时看到cacheSingletonUtil = null,如果不为null,则直接返回cacheSingletonUtil synchronized (CacheSingletonUtil.class) {// 线程A或线程B获得该锁进行初始化 if (cacheSingletonUtil == null) {// 其中一个线程进入该分支,另外一个线程则不会进入该分支 cacheSingletonUtil = new CacheSingletonUtil(); } } } return cacheSingletonUtil; } /** * 添加到内存 */ public void addCacheData(String key,Object obj){ cacheSingletonMap.put(key,obj); } /** * 从内存中取出 */ public Object getCacheData(String key){ return cacheSingletonMap.get(key); } /** * 从内存中清除 */ public void removeCacheData(String key){ cacheSingletonMap.remove(key); }} 测试类
import org.apache.commons.collections.CollectionUtils;import java.util.ArrayList;import java.util.List;public class CacheSingletonTest { public static void main(String[] args) { //测试查询 testQuery(); } private static void testQuery () { System.out.println("第一次查询开始"); query(); System.out.println("第一次查询结束"); System.out.println("============="); System.out.println("第二次查询开始"); query(); System.out.println("第二次查询结束"); } /* * 查询数据 */ private static List query() { List peopleList = null; List cacheData = (List) CacheSingletonUtil.getInstance().getCacheData(CacheSingletonUtil.PEOPLE_LIST_KEY); if (CollectionUtils.isNotEmpty(cacheData)) { System.out.println("从内存中读取"); peopleList = cacheData; } else { System.out.println("从数据库中读取"); peopleList = getData(); // 添加到内存中 CacheSingletonUtil.getInstance().addCacheData(CacheSingletonUtil.PEOPLE_LIST_KEY, peopleList); } for (People people : peopleList) { System.out.println("name : " + people.getName() + " age : " + people.getAge()); } return peopleList; } /* * 删除数据 */ private void deleteCache () { CacheSingletonUtil.getInstance().removeCacheData(CacheSingletonUtil.PEOPLE_LIST_KEY); } private static List getData() { People p1 = new People(); p1.setName("Jack"); p1.setAge(25); People p2 = new People(); p2.setName("Brown"); p2.setAge(28); List peopleList = new ArrayList<>(); peopleList.add(p1); peopleList.add(p2); return peopleList; }} 读到这里,这篇"Java单例模式怎么利用HashMap实现缓存数据"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
模式
对象
实例
数据
内存
线程
查询
缓存
系统
文章
测试
频繁
内容
分支
懒汉
时间
第一次
装载
可观
妥当
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
百单网互联网科技有限公司
上海喔噻互联网科技有限公司
广州百单互联网科技有限公司
互联网科技垄断
互联网科技的
中国 科技 互联网
互联网 的科技创新
未来的互联网科技
居家互联网科技有限公司
互联网新科技动漫ppt素材
河南住房之家互联网科技
恒生互联网科技业指数调整周期
互联网金融科技元年
江苏苏星互联网科技有限公司
宇信科技在杭州互联网排第几
万物互联网智能科技
唯美互联网科技
杭州科技互联网公司有哪些
广州全民伙伴互联网科技有限公司
颐高云石互联网科技
互联网科技公司税收优惠
麻工互联网科技
中国 科技 互联网
衡水科技产业互联网平台
太原新华互联网科技学校怎么样
卫星互联网科技股票
互联网科技与管理
南平创想时代互联网科技有限公司
保险科技服务互联网营销体系
互联网界的黑科技