摘要:本文主要向大家介绍了JAVA语言单例模式代码说明,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
本文主要向大家介绍了JAVA语言单例模式代码说明,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
1.饿汉式
/**
* 饿汉模式
*
* 缺点:
* 在类加载的时候就进行了实例化,浪费内存
* 优点:
* 在获取实例的时候已经创建好了实例
* @author ZhangRui
* @time 2018/5/25 20:28
*/
public class HungrySingleton {
private static final HungrySingleton sInstance = new HungrySingleton();
public static HungrySingleton getInstance() {
return sInstance;
}
}
2.懒汉式
/**
* 懒汉模式
*
* 缺点:
* 在多线程中获取实例的时候会存在阻塞,比较耗时;
* 优点:
* 在需要使用的时候创建实例,避免了不必要的内存浪费
* @author ZhangRui
* @time 2018/5/25 20:31
*/
public class LazySingleton {
private static LazySingleton sInstance;
public synchronized static LazySingleton getInstance() {
if (sInstance == null) {
sInstance = new LazySingleton();
}
return sInstance;
}
}
3.DoubleCheck模式
/**
* DoubleCheck 模式
*
* 缺点:
* 如果不添加volatile关键字的时候,对象实例化不是原子性的操作,调用对象的方法时可能报nullPointException
* 优点:
* 多线程不会创建多个对象
*
* volatile 关键字 禁止java代码重排序,保持随时改变,立即可见性
* @author ZhangRui
* @time 2018/5/25 20:36
*/
public class DoubleCheckSingleton {
private static volatile DoubleCheckSingleton mInstance;
public static DoubleCheckSingleton getInstance() {
if (mInstance == null) {
synchronized (DoubleCheckSingleton.class) {
if (mInstance == null) {
mInstance = new DoubleCheckSingleton();
}
}
return mInstance;
}
return mInstance;
}
}
4.静态内部类
/**
* 静态内部类模式
*
* 推荐选用这种模式创建单例
* @author ZhangRui
* @time 2018/5/25 21:04
*/
public class StaticInnerClassSingleton {
public static class Holder{
private static StaticInnerClassSingleton mInstance = new StaticInnerClassSingleton();
public static StaticInnerClassSingleton getInstance(){
return mInstance;
}
}
}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号