单例模式?
Java code
public class A {
private Static A a = new A();
private A() {
}
public static A getInstance() {
return a;
}
}
这个是单例模式吗?还是应该这样
Java code
public class A {
private Static A a = null;
private A() {
}
public static A getInstance() {
if(null == a) {
a = new A();
}
return a;
}
}
都一样吧?
------解决方案--------------------单例模式 是 不允许外界创建对象,将对象私有化,
提供一个方法 返回对象
针对于 多线程的情况下,还有另外一种写法
------解决方案--------------------都是单例模式,
但是,
后一种,不适用于多线程情况,多线程下,会产生多个对象的情况。
------解决方案--------------------上面的两个都是单例模式
第一个是开始就赋值 为懒汉模式
第二个为要的时候才赋值 叫饿汉模式
这两个当然都涉及到线程安全的问题~!
------解决方案--------------------都是单例模式.
单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
1.饿汉式单例类
2.懒汉式单例类
使用的情况有点区别。
一个直接创建,一个是要用的时候再创建。饿汉式线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变。懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的。