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

2017-06-21  本文已影响0人  发觉原来我只是250

二十五、单例

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

单例所具备的特点:

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.双重判断

上一篇下一篇

猜你喜欢

热点阅读