单例模式的实现——延迟初始化占位类替代双重检验加锁以达到延迟初始化和线程安全的目的。

Posted deodara

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式的实现——延迟初始化占位类替代双重检验加锁以达到延迟初始化和线程安全的目的。相关的知识,希望对你有一定的参考价值。

package org.test;

public class Singleton {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Singleton singleton=Singleton.getInstance();
		System.out.println(singleton);
	}
	
	//延迟初始化占位类替代双重检验加锁以达到延迟初始化和线程安全的目的。
	private static class SingletonHolder{
		public static Singleton singleton=new Singleton();
	}
	public static Singleton getInstance(){
		return SingletonHolder.singleton;
	}
	
	private String name="test";
	private Singleton(){
	}
	public String toString(){
		return name;
	}

}

 

以上是关于单例模式的实现——延迟初始化占位类替代双重检验加锁以达到延迟初始化和线程安全的目的。的主要内容,如果未能解决你的问题,请参考以下文章

单例模式-懒汉式(双重检验)

关于双重检验锁方法和内部类方法实现单例模式的实验

单例实现备忘

如何实现一个单例模式 c#双重锁检查

双重检查锁定的单例模式和延迟初始化

单例模式双重检查锁定与延迟初始化你不得不知道的底层原理