如图,在做单例模式之饿汉式时遇到的疑问:在类中加了一个常量对象**single2**,并获取对象,所以这种模式还算单例模式吗?
单例模式的概念就是:一个类只有一个对象实例,是线程安全的。
而在学习过程中看到这样一句话:“饿汉式无需关注多线程问题、写法简单明了、能用则用。但是它是加载类时创建实例(上面有个朋友写错了)、所以如果是一个工厂模式、缓存了很多实例、那么就得考虑效率问题,因为这个类一加载则把所有实例不管用不用一块创建。”
既然一个单例模式类只会创建一个对象,那么为什么上句还会说:这个类一加载则把所有实例不管用不用一块创建。
一个类只有一个对象实例,是线程安全的。?
单例和线程安全貌似没直接关系,
线程安全应该说的是实现获取单例是否线程安全。
题主这样的单例感觉意义不大。。两个对象一样,有必要创建两个?
既然一个单例模式类只会创建一个对象,那么为什么上句还会说:这个类一加载则把所有实例不管用不用一块创建。
这句话的意思是,如果我的项目中有很多类中用到单例模式(饿汉的),一启动就需要创建很多对象,,,而不是指的一个类
有问题还可以追问
你这个是积极加载的单例模式,除此之外还有懒惰加载。积极加载利用jvm的静态构造函数不会重入和多次执行的特性巧妙解决了并发问题。相比之下,懒惰加载的单例需要自己写双检查锁来解决并发问题。积极加载的缺点是,消耗更多内存。