001_支持并发的两次判空懒汉单例
生活随笔
收集整理的这篇文章主要介绍了
001_支持并发的两次判空懒汉单例
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
package com.zr.single;/*** 支持并发的两次判空懒汉单例*/
public class TwiceJudgeNullLazySingleton {private TwiceJudgeNullLazySingleton() {}private static TwiceJudgeNullLazySingleton instance;public static TwiceJudgeNullLazySingleton getInstance() {// 第一次判空的意义在于: 其它线程访问该对象实例时, 已经有了对象实例, 直接返回。if(instance == null){// 这里加类对象同步代码块的意义在于: 防止多个线程同时创建实例。synchronized(TwiceJudgeNullLazySingleton.class) {// 第二次判空的意义在于: 多个线程访问创建该对象实例时, 由于创建对象实例的过程过慢, 多个线程都已经运行过了第一个判空。if(instance == null) {instance = new TwiceJudgeNullLazySingleton();}}}return instance;}
}
总结
以上是生活随笔为你收集整理的001_支持并发的两次判空懒汉单例的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 得到Android设备的唯一id
- 下一篇: 002_支持并发的内部类饿汉单例