Double-check解决多线程问题(并发问题,单例实现)

来源:互联网 发布:红包软件百度云 编辑:程序博客网 时间:2024/06/06 13:14

双重解决锁机制:

       即解决了线程安全问题,又提高了代码效率

  1. package org.mlinge.s05;  
  2.   
  3. public class MySingleton {  
  4.       
  5.     //使用volatile关键字保其可见性  
  6.     volatile private static MySingleton instance = null;  
  7.       
  8.     private MySingleton(){}  
  9.        
  10.     public static MySingleton getInstance() {  
  11.         try {    
  12.             if(instance != null){//懒汉式   
  13.                   
  14.             }else{  
  15.                 //创建实例之前可能会有一些准备性的耗时工作   
  16.                 Thread.sleep(300);  
  17.                 synchronized (MySingleton.class) {  
  18.                     if(instance == null){//二次检查  
  19.                         instance = new MySingleton();  
  20.                     }  
  21.                 }  
  22.             }   
  23.         } catch (InterruptedException e) {   
  24.             e.printStackTrace();  
  25.         }  
  26.         return instance;  
  27.     }  
  28. }

原创粉丝点击