博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单例模式中的饿汉模式
阅读量:5094 次
发布时间:2019-06-13

本文共 1153 字,大约阅读时间需要 3 分钟。

先看代码:

package com.roocon.thread.t5;public class Singleton {    private Singleton(){    }    private static Singleton instance = new Singleton();    public static Singleton getInstance(){       return instance;    }}
package com.roocon.thread.t5;public class Main {    public static void main(String[] args) {        Singleton s1 = Singleton.getInstance();        Singleton s2 = Singleton.getInstance();        Singleton s3 = Singleton.getInstance();        Singleton s4 = Singleton.getInstance();        System.out.println(s1);        System.out.println(s1);        System.out.println(s1);        System.out.println(s1);    }}

运行结果:

com.roocon.thread.t5.Singleton@5cad8086com.roocon.thread.t5.Singleton@5cad8086com.roocon.thread.t5.Singleton@5cad8086com.roocon.thread.t5.Singleton@5cad8086

 

所谓的饿汉模式:不管是否使用到instance这个实例,我们都在创建的过程中就对它进行实例化。

那么,饿汉模式是否会出现线程安全问题呢?

出现线程安全问题需要满足三个条件:

1.多线程的环境下

2.必须有共享资源

3.对资源进行非原子性操作

根据以上代码,我们发现,使用饿汉式,在调动getInstance方法时,就只干了一件事,那就是返回Instance实例。这个操作是原子性操作。因此,饿汉式不存在线程安全问题。

饿汉式的不足:不管是否需要使用到该实例,在创建的时候就已经实例化了。但其实在程序中根本没有用到该实例变量,就没必要先对它进行实例化。

推荐是在使用它的时候才对它进行实例化,这就是所谓的懒汉式单例模式。

 

转载于:https://www.cnblogs.com/sunnyDream/p/8011040.html

你可能感兴趣的文章
设计模式之装饰者模式
查看>>
开启Spark history server
查看>>
【转】Linux内核调试方法总结
查看>>
一道不知道哪里来的容斥题
查看>>
Win7 + VS2015 + CMake3.6.1-GUI + Makefile 编译开源库
查看>>
Blender Python UV 学习
查看>>
window添加右键菜单
查看>>
入手腾龙SP AF90mm MACRO
查看>>
ORACLE 递归查询
查看>>
20172315 2017-2018-2 《程序设计与数据结构》实验三报告
查看>>
别把SEO当苦力活,做优化要讲究策略
查看>>
Django项目:CRM(客户关系管理系统)--41--33PerfectCRM实现King_admin编辑整张表限制
查看>>
关于时间
查看>>
面向对象 阶段性总结
查看>>
[Android] 开发第十天
查看>>
[html]window.open 使用示例
查看>>
.NET下使用socket.io随笔记录
查看>>
操作~拷贝clone()
查看>>
通过this()调用有参构造方法
查看>>
Java开发中的23种设计模式
查看>>