首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Singleton多线程兑现

2012-09-03 
Singleton多线程实现一.单件模式一般实现二.单件模式多线程实现一.单件模式一般实现public class Singleto

Singleton多线程实现

一.单件模式一般实现
二.单件模式多线程实现


一.单件模式一般实现

public class Singleton {private static Singleton uniqueInstance;private Singleton() {}public static Singleton getInstance() {if (uniqueInstance == null) {uniqueInstance = new Singleton();}return uniqueInstance;}}



二.单件模式多线程实现

?

public class Singleton {private static Singleton uniqueInstance;private Singleton() {}public synchronized static Singleton getInstance() {if (uniqueInstance == null) {uniqueInstance = new Singleton();}return uniqueInstance;}}

?问题:性能降低

?

A. 如何getInstance()的性能对应用程序不是关键,就什么都不要做.同步可能使应用程序的执行效率降低100倍,但如果此方法不是被频繁的调用,则不用修改.因为同步的getInstance()方法既简单又有效.

B.使用"急切"创建实例,而不用延迟化的实例的方法

public class Singleton {private static Singleton uniqueInstance = new Singleton();public synchronized Singleton getInstance() {return uniqueInstance;}}

?C.使用"双重检查加锁",尽量减少使用同步:如果性能是你关心的,此方法可大大减少时间消耗

?

public class Singleton {private static volatile Singleton uniqueInstance;public static Singleton getInstance() {if (uniqueInstance == null) {synchronized (Singleton.class) {if (uniqueInstance == null) {uniqueInstance = new Singleton();}}}return uniqueInstance;}}

?

?

热点排行