ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【Java面试指北】单例模式 [打印本页]

作者: 天空闲话    时间: 2024-5-16 22:45
标题: 【Java面试指北】单例模式
单线程下的单例模式:
  1. public class Singleton {
  2.     private static Singleton instance;
  3.     private Singleton() {}
  4.     public static Singleton getInstance() {
  5.         if (instance == null) {
  6.             instance = new Singleton()
  7.         }
  8.         return instance;
  9.     }
  10. }
复制代码
几个关键点:
多线程下的单例模式:

和单线程有什么区别?
方法一:
只需要给 getInstance 方法添加 synchronized 关键字即可。
  1. public static synchronized Singleton getInstance() {
复制代码
问题:每次访问都要同步,会降低性能。
方法二:
双重查抄锁定
  1. public class Singleton {
  2.     private static volatile Singleton instance;
  3.     private Singleton() {}
  4.     public static Singleton getInstance() {
  5.         if (instance == null) {
  6.             synchronized (Singleton.class) {
  7.                 if (instance == null) {
  8.                     instance = new Singleton()
  9.                 }
  10.             }
  11.         }
  12.         return instance;
  13.     }
  14. }
复制代码
关键点:

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4