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

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

hot3.png

一.特点:

①单例类只能有一个实例

②单例类必须自己自己创建自己的唯一实例

③单例类必须给所有其他对象提供这一实例

二.实现方法:

①饿汉式

 public class Singleton1{    private Singleton1();    private static Singleton1 single=new Singleton1();    public static final Singleton1 getInstance(){        return single;    } }

②懒汉式1(线程不安全)

 public class Singleton1{    private Singleton1();    private static Singleton1 single=null;    public static Singleton1 getInstance(){        if(single==null){            single=new Singleton1();         }             return single;     } }

    这种方法因为在getInstance方法中没有添加线程锁,所有当有多个线程同时访问该方法时就会产生多个Singleton1实例。

③懒汉式2(线程安全,但是效率不高,即加入线程锁[线程锁的地方会浪费时间,若可以减少判断线程锁即可节约时间]

 public class Singleton1{    private Singleton1();    private static Singleton1 single=null;    public static synchronized Singleton1 getInstance(){        if(single==null){            single=new Singleton1();         }             return single;     } }

④懒汉式3(线程安全,效率也高,即双重判断)

  public class Singleton1{    private Singleton1();    private static Singleton1 single=null;    public static Singleton1 getInstance(){        if(single==null){            synchronized(Singleton1.class){                    if(single==null){                        s=new Singleton1();                     }             }              }         return single;     } }

 

转载于:https://my.oschina.net/u/1415486/blog/339762

你可能感兴趣的文章
我的友情链接
查看>>
查看Linux操作系统安装的位数(getconf 命令应用)
查看>>
ifstream读取文件失败和乱码问题
查看>>
Python信息采集器使用轻量级关系型数据库SQLite
查看>>
zookeeper中的exception的问题
查看>>
final+基本类型导致只编译常量类引起的错误
查看>>
分库分表的几种常见玩法及如何解决跨库查询等问题
查看>>
把GPS经纬度放入两个字符串,写入文件
查看>>
Java操作MongoDB实现CRUD
查看>>
给js文件传参数
查看>>
tomcat web.xml启动加载类
查看>>
Linux 配置SSH信任
查看>>
【九度OJ1352】|【剑指offer41】和为S的两个数字
查看>>
《android-文件大小》
查看>>
HTTPS的工作原理
查看>>
PhoneGap使用PushPlugin插件实现消息推送
查看>>
Boyer-Moore 算法介绍
查看>>
关于Java中的单例模式
查看>>
datepicker
查看>>
CentOS 7输入startx无法启动图形化界面
查看>>