欢迎使用CSDN-markdown编辑器
来源:互联网 发布:c语言中标识符是什么 编辑:程序博客网 时间:2024/05/16 15:32
题目:设计一个类,我们只能实现该类的一个实例
一.只适用于单线程
class Singleton1{ /* * 单例模式 */ private static Singleton1 instance = null; private Singleton1(){ //不允许公开实例化 } /** * 此时适用于单线程 */ public static Singleton1 getSingleInstance(){ if(instance==null) instance=new Singleton1(); return instance; }}
二.多线程但是效率不高
class Singleton2{ /* * 单例模式 */ private static Singleton2 instance = null; private Singleton2(){ //不允许公开实例化 } /** * 此时适用于多线程,但是效率不高 */ public static Singleton2 getSingleInstance(){ synchronized(Singleton2.class){ if(instance==null) instance=new Singleton2(); } return instance; }}
三.加同步所前后判断实例是否存在
class Singleton3{ /* * 单例模式 */ private static Singleton3 instance = null; private Singleton3(){ //不允许公开实例化 } /** * 加锁前判断 */ public static Singleton3 getSingleInstance(){ if(instance==null){ synchronized(Singleton2.class){ if(instance==null) instance=new Singleton3(); } } return instance; } }
四.推荐解法(利用静态构造函数)
class Singleton4{ /* * 单例模式 */ private static Singleton4 instance = new Singleton4(); private Singleton4(){ //不允许公开实例化 } public static Singleton4 getSingleInstance(){ return instance; } }
阅读全文
0 0
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 有趣的问题
- Java 类和对象基础知识
- oracle易错点记录
- Android的一些干货以及Android Studio的一些实用小技巧(持续更新)
- Spring 配置文件
- 欢迎使用CSDN-markdown编辑器
- 剑指Offer:数据流中的中位数
- 基于Gitlab CI搭建持续集成环境
- java基础之分支与循环语句
- HDU 1297
- 2016至2017年上半年iOS项目细节(2)
- 解决百度地图使用出现的has leaked ServiceConnection com.baidu.location.b@4aa5a810 that was originally bound here
- 做设计迷茫时怎么办
- HTML5_对象-雪花-PK-封装-继承-原型