andy's blog

记录我的所做所思

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  1 Posts :: 13 Stories :: 0 Comments :: 0 Trackbacks
一:
    某些情况下一个类只能有一个实例,如thread pool,caches,objects that handle preferences and registry settings,objects used for logging,对这些情况下如果产生多于一个的实例会导致不正常的行为和浪费资源。
  
public class Singleton {
    
private volatile static Singleton singleton;

    
// 设为private,外界不能通过new的方法来获得一个实例。
    private Singleton() {
    }


    
// synchronized如果加在方法定义处,开销相对较大
    public static Singleton getInstance() {
        
if (singleton == null{
            
//必须处理多线程带来的问题,如果thread1执行到上一步,同时thread2也执行到上一步,
            
//都判断出singleton==null 就会得到两个实例。
            synchronized (Singleton.class{
                
if (singleton == null{
                    singleton 
= new Singleton();
                }

            }

        }

        
return singleton;
    }


    
public void display() {
        System.out.println(
"singleton");
    }

}
posted on 2006-03-30 17:15 zhoumin 阅读(79) 评论(0)  编辑  收藏 所属分类: 设计模式

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


网站导航: