随笔 - 0, 文章 - 75, 评论 - 0, 引用 - 0
数据加载中……

Java单例模式

第一种:


定义私有构造函数:


private Single1(){}


定义私有对象:


private static Single1 instance=new
Single1();


定义公共静态方法:


public static Single1 create(){


return instance;


}


外界只需调用静态方法,即可获得该对象:


Single1 test =
Single1.create();


第一种特点:调用块,不调用也有空间保存对象


-------------------------------------------


第二种:(推荐)


同上,定义私有构造函数:


private Single2(){}


定义私有对象,不要 new 出对象!


private static Single2 instance;


写公共静态方法:


public synchronized static Single2
create(){


init();


if(instance == null){


synchronized(Single2.class){
//这里还需上锁,因为第一个人进来后,开始等待new对象


if(instance
== null) //这时如果第二人也进来了,不能让第二人也new对象



instance = new Single2();


}


return instance;


}


return
instance;


}


public static void init(){} //用来做初始化



解释:synchronized关键字,代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C
D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A,没有的话,直接运行它包括两种用法:synchronized 方法和
synchronized 块。


防止多人访问卡死


第二种特点:不在内存中保存对象,第一次创建对象慢

posted on 2012-04-22 15:13 hantai 阅读(107) 评论(0)  编辑  收藏


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


网站导航: