单例

来源:互联网 发布:网络加速器原理 编辑:程序博客网 时间:2024/04/30 04:06
  • 单例设计模式
    • 面试问题:
    • 一般采用饿汉式
    • 因为在多线程的时候不会出现问题
      *
    • 懒汉式特点 实例的延迟加载
    • 但在多线程时会出现安全隐患
    • 加同步可决解问题
    • 可加同步代码块
    • 同步函数
    • 用双重判断可决解效率问题
    • 同步锁是 该类所属的字节码文件
      /*
    • 单例设计模式
    • 面试问题:
    • 一般采用饿汉式
    • 因为在多线程的时候不会出现问题
      *
    • 懒汉式特点 实例的延迟加载
    • 但在多线程时会出现安全隐患
    • 加同步可决解问题
    • 可加同步代码块
    • 同步函数
    • 用双重判断可决解效率问题
    • 同步锁是 该类所属的字节码文件
      */
      //饿汉式
      /*
      class Single{
      private static final Single s=new Single();
      private Single(){
      }
      public static Single getInstance(){
      return s;
      }
      }
      */
      //懒汉式
      //在多线程调用时容易出现安全隐患
      /*
      class Single{
      private static Single s=null;
      private Single(){
      }
      public static Single getInstance(){
      if(s==null){
      s=new Single();
      }
      return s;
      }
      }
      */
      //决解了安全隐患 但是出现了效率低下的问题
      /*
      class Single{
      private static Single s=null;
      private Single(){
      }
      public static synchronized Single getInstance(){
      if(s==null){
      s=new Single();
      }
      return s;
      }
      }
      */
      class Single {
      private static Single s = null;
      private Single() {
      }
      public static synchronized Single getInstance() {
      if (s == null) {//减少了判断锁的次数
      synchronized (Single.class) {
      if (s == null) {
      s = new Single();
      }
      }
      }
      return s;
      }
      }
      public class SingleDemo {
      }
0 0
原创粉丝点击