原文:
http://xuhengfei.com/notebook/2010/02/java-singleton/
在单例模式中有一种延时实例化方法,
当调用get方法获取单例时,判断是否已经实例化,如果没有,则创建该实例并返回。如果有直接返回。
在这个过程中如果考虑多线程并发问题,我们需要用双重锁定来保证该实例的单一性。
public class Singleton {
private Singleton (){
}
private static Singleton main;
/**
* 双重锁定
* @return
*/
public static Singleton get(){
if(main==null){
synchronized (Singleton.class) {
if(main==null){
main=new Singleton();
}
}
}
return main;
}
public static void main(String[] args) throws Exception{
System.out.println(Singleton.get().toString());
}
@Override
public String toString() {
return "I am Singleton ";
}
}
单例模式的另一种实例化方法是在静态代码块中直接创建实例,这样就不需要考虑多线程的问题了。
public class Singleton {
private Singleton (){
}
private static Singleton main=new Singleton();
}
今天读到一篇创新型的单例设计,记录一下
public class Singleton {
static class SingletonHolder {
static Singleton instance = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.instance;
}
}
分享到:
相关推荐
在Java编程语言中,单例模式是一种常用的软件设计模式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在系统中需要频繁创建和销毁对象时,或者对象的创建过程比较昂贵时,特别有用。单例...
书中可能通过双重检查锁定、静态内部类等方式展示了Java中的单例实现。 3. 建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。在实验中,你可能会看到...
软件主体:stata软件安装包。版本:stata18。价格:免费。安装教程:请阅读本人相对应的安装教程文章。描述:安装教程保姆级别仔细,直接按步骤来就行了。本人申明:本安装包需要的人可以免费获取,不用于商业买卖,只用于学术研究。(如果可以帮到大家就给个关注吧)
内容概要:本文介绍了一个基于Java技术开发的电力设备管理系统的详细设计与实现过程。系统涵盖了电力设备、站点管理、技术资料图纸管理、建筑管理、审批流转等多个功能模块,通过高效的信息化手段,提高了电力设备的管理水平,降低了传统管理带来的冗余劳动,提升了工作效率。系统采用J2EE三层架构模式,使用SSH技术框架,前端使用JSP、CSS和JavaScript技术,数据库使用MySQL,实现了高内聚低耦合的系统架构。 适合人群:从事电力设备管理的IT从业人员,尤其是有一定Java开发基础的研发人员。 使用场景及目标:适用于需要对电力设备进行全面管理的企业,旨在提升电力设备管理的自动化水平和信息共享能力,从而减少人力投入,提高管理水平和安全性。 其他说明:本文提供了系统的总体架构、各功能模块的具体设计和实现细节,还讨论了系统测试的方法和测试用例,确保系统功能的完整性和可靠性。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
栅格系统Grid布局.docx
题目描述: 建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。 功能要求: (1) 通讯录的每一条信息包括姓名、单位、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。 (2) 输入功能:可以一次完成若干条信息的输入。 (3) 显示功能:完成全部通讯录信息的显示。 (4) 排序功能:按照一定的排序顺序显示通讯录信息。排序顺序有多种,如按姓名排序、按年龄排序、按所在城市排序、按所在单位排序等,具体使用的排序顺序由设计者确定。 (5) 查找功能:可以按姓名等多种方式查找通讯信息。 (6) 插入、删除(根据姓名)、修改(根据姓名)功能:完成通讯录信息的多种更新。 扩展功能: (1) 提供一些统计功能。例如可以按照分类进行统计。 (2) 通信录信息从文件读入。 (3) 将通讯录信息保存到文件中
2021-2024年共15套,二级编程等级考试真题与答案,明确目标,检验成果,熟悉考试,提升应试能力
音像店租赁管理系统的设计与实现 摘 要 随着信息技术在管理上的广泛应用,管理信息系统(MIS)的实施在技术上已经逐步成熟。企业要生存、要发展、要高效率地把企业活动有效组织起来,就必须加强对企业内部各种资源(人、财、物)的有效管理,建立与自身特点相适应的管理信息系统。 本音像店管理租赁管理系统,设计并且完成了一个小型的音像店管理信息系统,使得经营者以及普通用户能对影碟的历史记录等进行操作。 本音像店租赁管理系统是一个典型的管理信息系统,在J2EE架构的基础下实现模块化,使用Struts和Hibernate技术实现并完成。在该系统的设计和实现过程中,采用了一些新技术,使其具有了良好的扩展性以及最大程度上降低了耦合。 关键词:管理信息系统;J2EE; Struts;Hibernate;
随着数字技术和企业数字化转型的推进,企业的人力资源管理方式也在不断的变化,尤其是企业数字化转型对劳动力就业产生了深远的影响。 传统制造企业的工作模式一般是人工操作,处于低劳动力成本下的位置,而数字化转型要求企业应用物联网、云计算、大数据等先进技术,提高生产效率和减少人力成本。 数字化转型对企业劳动力就业的影响是多方面的,除替代性影响外,还会给企业带来新的机会,促进员工自我提升和企业人力资源管理意识的提高。本数据的整理让大家能够更清晰了解数字化转型对有关企业劳动力就业的影响。 相关数据指标 企业年龄 , 资产负债率 , 流动比率 , 股权集中度 , 所有制性质, 总资产收益率, 地区人均GDP
手势交互的可用性测试与评估.docx
功能说明: 汽车在线销售系统的主要使用者分为管理员:个人中心、用户管理、车辆信息管理 、汽车信息管理 、汽车类型管理、汽车颜色管理、入库记录管理、出库记录管理、车辆购买管理、运输收费管理、订单状态管理管理、留言板管理、系统管理、管理员管理、留言管理等等。用户:个人中心、车辆购买、运输收费管理、订单状态管理、我的收藏管理等功能。首页前台功能:首页、汽车信息、新闻资讯、留言反馈、我的收藏通过这些功能模块的设计,基本上实现了整个汽车在线销售系统的过程。 环境说明: 开发语言:java 框架:ssm jdk版本:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse 部署容器:tomcat7+
在线测试管理系统 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
几套嵌入式-真实简历.zip
联想电脑的bios设置、图文都有
网络拓扑结构优化.docx
功能说明: 管理员:首页、个人中心、用户管理、评审员管理、省份管理、评审条件管理、职称申请管理、结果公布管理、论坛管理、系统管理。 评审员:首页、个人中心、职称申请管理、结果公布管理。 用户:首页、个人中心、职称申请管理、结果公布管理、我的收藏管理。 前台首页:首页、评审条件、论坛信息、系统公告、个人中心、后台管理、客服功能等功能模块。 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
非常好的电子设计小软件屏幕颜色获取软件非常好用的软件.zip
内容概要:本文档详尽描述了达梦数据库从当前版本vx.x.x.x向vx.x.x.x版本迁移的整体实施方案,涉及升级前准备(软硬件需求)、详细的实施步骤(如停用原有服务、备份、替换版本)、环境配置和最终的服务验证等多个方面,同时提供了遇到突发情况的回退机制。 适合人群:熟悉达梦数据库的管理员,数据库运维人员和技术支持工程师。 使用场景及目标:适用于计划更新达梦数据库的企业或机构,帮助其平滑过渡到最新版本数据库,并确保升级过程中不影响现有系统的稳定性与连续运行。 其他说明:该方案假设操作员具备相应的专业知识,对于每个操作环节都有明确的时间估计。同时提醒使用者仔细阅读每个步骤,严格按照指南进行,以减少错误发生几率。