一) 什么是
单件模式
很简单,使代码只能实例化一个实例的
设计模式。怎么做,看个典型样例:
如上图,
把握3个注意点吧:
1)uniqueInstance 必须用 private static 修饰
2)
构造函数必须 private
3)函数getInstance() 必须 static
二)单件模式的多
线程处理
显然,以上单件模式的代码不支持多线程。(如何多线程冲突的这里就不多解释了,出问题的就是:if( uniqueInstance == null) { uniqueInstance = new Singleton(); } 这句啦 )
解决方法也很简单,在函数getInstance()前增加线程保护:synchronized 就ok啦
三)多线程单件模式的优化原则
多线程的处理是十分简单,但它也带来性能降低的问题。如何优化? 原则有三:
1)如果性能对应用程序不是很重要,忘了优化吧,就这样吧~~哈哈
2)采用急切创建实例:
3)三重检查加锁:
这个方案要特别注意哦:
1、volatile修饰符哦。
2、不适用于1.4及更早的java
版本
- 大小: 248.6 KB
- 大小: 134.1 KB
- 大小: 239.4 KB