多线程的饿汉式和懒汉式
导语:多线程的单例设计模式保证某个类中内存中只有一个对象,分为饿汉式和懒汉式,让我们了解一下吧!
1饿汉式:
class Single
private Single//将构造函数私有化,不让别的`类建立该类对象
private static final Single s=new Single;//自己建立一个对象
public static Single getInstance//提供一个公共访问方式
return s;
2懒汉式:
class Single
private Single
private static Single s;
public static Single getInstance
ifs==null
s=new Single;
return s;
饿汉式和懒汉式的区别:
**
饿汉式是类一加载进内存就创建好了对象;
懒汉式则是类加载进内存的时候,对象还没有存在,只有调用了getInstance方法时,对象才开始创建。
**
懒汉式是延迟加载,如果多个线程同时操作懒汉式时就有可能出现线程安全问题,解决线程安全问题
可以加同步来解决。但是加了同步之后,每一次都要比较锁,效率就变慢了,
所以可以加双重判断来提高程序效率。
如将上述懒汉式的Instance函数改成同步:
public static Single getInstance
ifs==null
synchronizedSingle.class
ifs==null
s=new Single;
return s;