本文主要是介绍不用饿汉和锁实现线程安全的单例模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
面试官不让用饿汉和锁,要求实现线程安全的单例,记录下使用原子类的解法;
代码
SingletonWithoutLock.java
import java.util.concurrent.atomic.AtomicReference;/*** @author jhz* @date 19-8-10 下午11:55*/
public class SingletonWithoutLock {private static AtomicReference<SingletonWithoutLock> instance = new AtomicReference<>();private SingletonWithoutLock() {}public static SingletonWithoutLock getInstance() {for (; ; ) {SingletonWithoutLock singleton = instance.get();if (singleton == null) {singleton = new SingletonWithoutLock();if (!instance.compareAndSet(null, singleton))continue;}return singleton;}}}
测试类
/*** @author jhz* @date 19-8-11 上午12:13*
这篇关于不用饿汉和锁实现线程安全的单例模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!