少年阿宾

那些青春的岁月

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
package com.abin.lee.collection.singleton;
/**
 * 双重检查加锁 单例模式
 * @author abin
 * 这个单例模式写法可以大大减少getInstance的时间消耗!
 */
public class SingletonOne {
  /** 
     * volatile关键词确保:当singleton变量被初始化成SingletonOne实例时,多个线程正确地处理singleton变量 
     */ 
 private volatile static SingletonOne singleton=null;
 public SingletonOne(){}
 public static SingletonOne getInstance(){
  if(null==singleton){//检查实例,如果不存在就进入同步区块
   synchronized (SingletonOne.class) {//注意,只有第一次才彻底执行这里的代码
    if(null!=singleton){
     singleton=new SingletonOne();
    }
   }
  }
  return singleton;
 }
}





package com.abin.lee.collection.singleton;

public class SingletonTwo {
 /**
  * volatile关键词确保:当uniqueInstance变量被初始化成Singleton实例时,
  * 多个线程正确地处理uniqueInstance变量
  */
 private volatile static SingletonTwo singleton = new SingletonTwo();

 private SingletonTwo() {
 }

 public static SingletonTwo getInstance() {
  return singleton;
 }
}

posted on 2012-09-01 00:27 abin 阅读(652) 评论(0)  编辑  收藏 所属分类: JavaBasic

只有注册用户登录后才能发表评论。


网站导航: