今天看单例设计模式时,偶然想到一个问题:既然单例设计模式可以减少内存开销,为啥我们不把所有类都设计成单例的?这样就可以所有线程都共享一个对象,避免创建对象造成内存开销了。
个人观点:
打个比方,如果将HashMap 这种集合类设计成单例的话,如果多个线程同时访问该类的实例,可能会有线程安全问题。如果使用 concurrentHashMap 又会影响执行效率。如果不设计成单例的,每此实例化的对象都是不一样的,hash值不同。所以可以任意实例化HashMap ,提升执行效率,不用并发访问时多个线程排队等待创建对象的问题。但是如果遇到单个对象的线程安全问题,比如可能会用多个线程对本次实例化的对象访问,可以使用并发容器 ConcurrentHashMap 来保证线程安全。
欢迎各位看官评论,求证我的观点。