双重检查的单例模式的代码实现及代码注释的详细介绍
package 单例模式;
public class 双重检查 {
public static void main(String[] args) {
singleton sin1=singleton.getInstance();
singleton sin2=singleton.getInstance();
System.out.println(sin1==sin2);
}
}
//优缺点说明
/*
* 1.Double-Check概念是多线程开发中经常使用到的,进行了两次if的检查,可保证线程的安全
* 2.实例化代码只执行一次,后面再次访问时,判断if直接return实例化对象,避免反复进行方法同步
* 3.线程安全,延迟加载,效率较高,在实际开发中推荐使用这种方法
*
*/
class singleton{
private singleton() {
}
private static volatile singleton sing;
public static singleton getInstance() {
if(sing==null) {
synchronized (singleton.class ) {
if(sing==null) {
sing=new singleton();
}
}
}
return sing;
}
}
运行结果: