单例模式(Singleton),保证在程序运行期间,内存中只有一个实例对象。

饿汉式,最常用的方式。JVM加载类到内存中时,创建实例,线程安全。

public class Boss
{
private static final Boss boss = new Boss(); private Boss(){} public static Boss getBoss()
{
return boss;
}
}

懒汉式,存在线程安全问题,一般不用

public class Boss
{
private static Boss boss; private Boss(){} public static Boss getInstance()
{
if(boss==null)
{
boss= new Boss();
}
return boss;
}
}

懒汉式,使用加锁的方式解决线程安全问题

public class Boss
{
private static volatile Boss boss; private Boss()){} public static Boss getInstance()
{
if(boss==null)
{
synchronized(Boss.class)
{
if(boss==null)
{
boss= new Boss();
}
}
}
return boss;
}
}

使用静态内部类,在内部类中持有外部类的实例,从而实现懒加载,并保证线程安全性。

写法不太直观,不常用

public class Boss
{
private Boss(){} private static class BossHolder
{
private static final Boss boss = new Boss();
} public static Boss getInstance()
{
return BossHolder.boss;
}
}

终极写法!《Effective Java》中推荐的写法,使用枚举,干净利落!

public enum Boss
{
INSTANCE
}

最新文章

  1. 队列的链式存储方式的实现(Java语言描述)
  2. Ruby on Rails Tutorial 第二章 之 toy_app项目搭建
  3. matlab2014在mac Yosemite下出现java空指针情况
  4. 158. Read N Characters Given Read4 II - Call multiple times
  5. sqlServer 求当前周的第一天和最后一天,当前月的第一天和最后一天,前三个月的第一天和今天
  6. hadoop python and Twitter
  7. LeetCode - 690. Employee Importance
  8. 个人对【依赖倒置(DIP)】、【控制反转(IOC)】、【依赖注入(DI)】浅显理解
  9. luoguP1919 A*B Problem升级版 ntt
  10. 【redis专题(10)】KEY设计原则与技巧
  11. echarts使用笔记一:基本属性
  12. Minor GC vs Major GC vs Full GC
  13. nmon 加权平均法
  14. 闭包引起的onclick不起作用
  15. shiro中单点登录
  16. java学习笔记16(正则表达式)
  17. hibernate映射组成关系
  18. 小猴打架(luogu4430)(数论+生成树计数)
  19. Android程序员眼中世界上最遥远的距离
  20. CentOS命令top下你不一定懂的cpu显示信息

热门文章

  1. MSSQL·最长输出长度限制之解决方案
  2. [bug] IDEA springboot项目 访问静态资源 html页面 报404
  3. 马哥Linux SysAdmin学习笔记(三)
  4. Msf--永恒之蓝 ms17_010
  5. Rust模块化
  6. Linux_配置本地YUM源(RHEL8)
  7. Samba服务配置及配置文件说明
  8. 033.Python的__del__析构方法he__call__方法
  9. Lua中的基本函数库--(转自忧郁的加菲猫)
  10. 使用nuget包下载Entity Framework6.0无法使用模型类与数据库上下文自动生成controller与view