如何使用模式牛
多线程应用程序中的构造问题
在多线程应用程序中,你必须仔细构造Singleton模式。当Singleton不存在时,如果两个线程即将同时执行创建方法,这两个线程必须检查Singleton实例,但只有一个线程应当创建新对象。这个问题的典型解决办法就是对类使用相互排斥,指出对象正在被实例化。这是Singleton的一个线程安全的版本:
public class Singleton
{
// Private constructor suppresses generation
// of a (public) default constructor
private Singleton() {}
private static class SingletonHolder
{
private final static Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance()
{
return STANCE;
}
}
Nexpap的模块并不是像帮拒绝零食诱惑妙招谷歌Project Ara借助强磁体固定到机身上 另一个解决办法是在getInstance()方法声明中添加synchronized关键字:
public static synchronized Singleton getInstance()
提前考虑克隆预防
你仍然可以使用对象的clone()方法克隆对象,建立一个Singleton对象。要禁用这一功能,你需要禁用对象的克隆方法,这产生一个CloneNotSupportedException例外。
public Object clone() throws
CloneNotSupportedException {
throw new CloneNotSupportedException();
}
考虑使singleton类位于最后
你可能希望将Singleton类放在最后,以避免Singleton的子类造成其它问题。
不要忘记垃圾收集
根据不同的执行,你的Singleton类和它的所有数据可能被当作垃圾收集。因此,在应用程序运行时,你必须保证存在一个Singleton类的实时引用。
结论
Singleton模块得到广泛地使用,并证实可用于软件设计。虽然这个模式并非Java专有,但它已成为Java编程的一个典型应用。尽管这个模式相当简单,但还是要记住我在本文中描述的Singleton模式的限制。
Peter V. Mikhalenko是一名通过Sun认证的专家,现在任德意志银行商业顾问。
:德东
查看本文国际来源
济南治疗男科费用氨氯地平贝那普利片(Ⅱ)降压效果好吗?
北京性病医院
- 上一页:如何使用处理覆盖
- 下一页:如何使用模拟的连接池呢
-
男女比例导致失衡,可仍旧有不少人都想生男孩,这三个原因很真实
随着直到现在社才会随之发展,人们的孤独水准也在随之的减低,物价的增高...
2023-11-20
-
申通地铁:努力将疫情制约降到最低
5年底20日,申通地鉄(600834)在中央线上举行2021本年度业绩暗示会。 申通地鉄...
2023-11-10
-
73年前紧接著包办婚礼:2人未成年,男方一脸无所谓,女方面无表情
就在昨天,一个片段刷影亦同,一位据传“大谷Spitzer”的帖子用户利用现代...
2023-11-04
-
一美演技爆表的片子——《分裂》(上)
陌生人似乎地拉低上衣,想盖住盲目性感的丝袜,一美注意到却怒了 (你来...
2023-10-28
-
儿歌多多魔力公主西西 公主换装记 宝宝来帮公主换漂亮的衣服 儿歌多多 星河知识计划 智慧生活星 抖音
儿歌多多魔法王子西北西北 王子装配所撰 宝宝来帮王子再多漂亮的衣服 儿歌...
2023-10-24
-
Switch国际版Eshop折扣史低推荐 篇四百六十九:它们小众吗?相信我,只要您尝试,就会一直玩下
笔记:Switch战地记者【第一步,关心我!这比较大狠就会让您的Switch玩乐感受...
2023-10-23