Welcome to

Vcode

首页 / Java / CAS单例模式

CAS单例模式

CAS单例模式:

import java.util.concurrent.atomic.AtomicReference;/**
 * 更加优美的Singleton, 线程安全的
 * 
 * @author andy
 *
 */public class Singleton { 
 /** 利用AtomicReference */
 private static final AtomicReference<Singleton> INSTANCE = new AtomicReference<Singleton>(); 
 /**
  * 私有化
  */
 private Singleton(){
 } 
 /**
  * 用CAS确保线程安全
  * 
  * @return
  */
 public static final Singleton getInstance(){  
     for (;;) {
       Singleton current = INSTANCE.get();            
       if   (current != null) {                
          return current;
      }
      current = new Singleton();
      if (INSTANCE.compareAndSet(null, current)) {
           return current;
      }
    }
 } 
 
 /**
  * 测试case
  * 
  * @param args
  */
 public static void main(String[] args) {
  Singleton singleton1 = Singleton.getInstance();
  Singleton singleton2 = Singleton.getInstance();
     System.out.println(singleton1 == singleton2);
 }

}




本文暂无评论

发表评论

您的电子邮件地址不会被发布。

>> <<