并发编程:单例与多线程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并发编程:单例与多线程相关的知识,希望对你有一定的参考价值。

单例模式,最常见的就是饥饿模式和懒汉模式,一个直接实例化对象,一个在调用方法时进行实例化对象。在多线程模式中,考虑到性能和线程安全问题,我们一般选择下面两种比较经典的单例模式,在性能提高的同时,又保证了线程安全。

 dubble check instance

 static inner class


静态内部类static inner class

public class InnerSingleton {
	private static class Singletion {
		private static Singletion single = new Singletion();
	}
	
	public static Singletion getInstance() {
		return Singletion.single;
	}
}

双重判断:dubble check instance

public class DubbleSingleton {
	private static DubbleSingleton ds;
	
	public static DubbleSingleton getDs() {
		if (null == ds) {
			try {
				Thread.sleep(3000); // 模拟初始化对象的准备时间
			} catch (Exception e) {
				e.printStackTrace();
			}
			synchronized (DubbleSingleton.class) {
				if (null == ds) {
					ds = new DubbleSingleton();
				}
			}
		}
		return ds;
	}
}



本文出自 “我爱大金子” 博客,请务必保留此出处http://1754966750.blog.51cto.com/7455444/1909800

以上是关于并发编程:单例与多线程的主要内容,如果未能解决你的问题,请参考以下文章

Java并发笔记——单例与双重检测

单例与多例的理解

Spring Controller单例与线程安全那些事儿

Spring Bean单例与线程安全

Spring 单例 Bean 与多线程深度分析

@Component单例与并发