java单例模式
来源:互联网 发布:软件实施心得体会 编辑:程序博客网 时间:2024/06/11 20:44
这里只写两种最常用的方式,且线程安全的:
一、静态内部类方式
public class Singleton { private static class SingletonHolder { private static final Singleton INSTANCE = new Singleton(); } private Singleton (){} public static final Singleton getInstance() { return SingletonHolder.INSTANCE; } }
这种方式同样利用了classloder的机制来保证初始化instance时只有一个线程
二、枚举方式
public class SingletonObject { private SingletonObject(){} private enum Singleton{ INSTANCE; private final SingletonObject instance; Singleton(){ instance=new SingletonObject(); } public SingletonObject getInstance(){ return instance; } } public static SingletonObject getInstance(){ return Singleton.INSTANCE.getInstance(); } public static void main(String[] args){ IntStream.rangeClosed(1,100).forEach(i->new Thread(String.valueOf(i)){ @Override public void run(){ System.out.println(SingletonObject.getInstance()); } }.start()); }}这种方式是Effective Java作者Josh Bloch 提倡的方式,它不仅能避免多线程同步问题,而且还能防止反序列化重新创建新的对象,可谓是很坚强的壁垒啊,不过要注意enum是1.5版本后才引入的类型
阅读全文
0 0
- java单例模式
- Java单例模式
- java单例模式
- java单例模式
- Java单例模式
- Java单例模式
- java单例模式
- Java单例模式
- java 单例模式
- java单例模式
- java单例模式
- java单例模式
- java 单例模式
- JAVA单例模式
- java单例模式 .
- Java 单例模式
- Java单例模式
- Java 单例模式
- C#读取与修改XML文档
- GPS数据读取与处理
- Leetcode-Longest Substring Without Repeating Characters
- js获得input中的value值
- 《游戏设计的100个原理》摘要
- java单例模式
- HDU 4035 Maze(数学期望)
- Java中有关null的9件事
- SuperAgent使用简介
- 《Linux进程、线程和调度》4次课程高清ppt和录播链接
- 既然时间是相对的,那当我们谈论宇宙年龄时我们在谈论什么?
- QDir和 QFileInfo使用
- 欢迎使用CSDN-markdown编辑器
- 异或