美文网首页
Java知识点总结基础篇之单例

Java知识点总结基础篇之单例

作者: 发觉原来我只是250 | 来源:发表于2017-06-21 20:39 被阅读0次

    二十五、单例

    单例就是该类只能返回一个实例。

    单例所具备的特点:

    1.私有化的构造函数

    2.私有的静态的全局变量

    3.公有的静态的方法

    单例分为懒汉式、饿汉式和双层锁式

    饿汉式:

    public class Singleton1 {

    private Singleton1() {};

    private static Singleton1 single = new Singleton1();

    public static Singleton1 getInstance() {

    return single;

    }

    }

    懒汉式:

    public class Singleton2 {

    private Singleton2() {}

    private static Singleton2 single=null;

    public tatic Singleton2 getInstance() {

    if (single == null) {

    single = new Singleton2();

    }

    return single;

    }

    }

    线程安全:

    public class Singleton3 {

    private Singleton3() {}

    private static Singleton3 single ;

    public static Singleton3 getInstance() {

    if(null == single){

    synchronized(single ){

    if(null == single){

    single = new Singleton3();

    }

    }

    }

    return single;

    }

    }

    参考:

    通过双重判断来保证单列设计模式在多线程中的安全性,

    并且它在性能方面提高了很多。

    synchronized在方法上加锁 (同步锁)

    synchronized在代码块内部加锁 (同步代码块)

    synchronized(同步锁)

    使用synchronized如何解决线程安全的问题?

    1.synchronized在方法上加锁

    2.synchronized在代码块内部加锁

    1.懒汉 2.饿汉 3.双重判断

    相关文章

      网友评论

          本文标题:Java知识点总结基础篇之单例

          本文链接:https://www.haomeiwen.com/subject/utntcxtx.html