开发者社区> 问答> 正文

线程安全的单例?

线程安全的单例?

本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。 点击链接欢迎加入感兴趣的技术领域群。

展开
收起
游客pklijor6gytpx 2019-11-11 15:52:54 3318 0
3 条回答
写回答
取消 提交回答
  • 下一站是幸福

    在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。总之,选择单例模式就是为了避免不一致状态,避免政出多头。

    2020-03-26 22:18:52
    赞同 展开评论 打赏
  • 面试的时候,常常会被问到这样一个问题:请您写出一个单例模式(Singleton Pattern)吧。好吧,写就写,这还不容易。顺手写一个:

    复制代码 1 //饥饿模式 2 public final class EagerSingleton
    3 {
    4 private static EagerSingleton singObj = new EagerSingleton();
    5
    6 private EagerSingleton(){
    7 }
    8
    9 public static EagerSingleton getSingleInstance(){
    10 return singObj; 11 }
    12 }
    复制代码 这种写法就是所谓的饥饿模式,每个对象在没有使用之前就已经初始化了。这就可能带来潜在的性能问题:如果这个对象很大呢?没有使用这个对象之前,就把它加载到了内存中去是一种巨大的浪费。

    2020-03-20 23:57:50
    赞同 展开评论 打赏
  • public class Singleton {  
        private static class SingletonHolder {  
        private static final Singleton INSTANCE = new Singleton();  
        }  
        private Singleton (){}  
        public static final Singleton getInstance() {  
        return SingletonHolder.INSTANCE;  
        }  
    }
    
    2019-11-11 15:53:36
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
多IO线程优化版 立即下载
JAVA反射原理以及一些常见的应用 立即下载
低代码开发师(初级)实战教程 立即下载