Java之美[从菜鸟到高手演变]之
设计模式
Java开发中的23种设计模式详解
class="java">package cn.com.songjy;
public class Singleton {
/* 持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载 */
private static Singleton instance = null;
/* 私有构造方法,防止被实例化 */
private Singleton() {
}
/* 静态工程方法,创建实例 ,非线程安全 */
public static Singleton getInstance1() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
/* 静态工程方法,创建实例 ,线程安全(但不绝对,原因请参阅以上2个链接的说明,但针对其说明个人有保留意见) */
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {// 此处能否写成synchronized(instance),为啥???
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
/* 如果该对象被用于序列化,可以保证对象在序列化前后保持一致 */
public Object readResolve() {
return instance;
}
}
以下是绝对线程安全的
单例模式,其缺点是没实现懒加载,大数据或大型项目中可能影响性能
package cn.com.songjy;
public class Singleton {
private static final Singleton instance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
}
- Java并发编程常识.zip (371 KB)
- 下载次数: 0