- class Single
- {
- private single(){}
- private static Single s =null;
- public void single getInstance()
- {
- if(s==null) //多线程中,如果有线程thread1在这里判断s==null,然后转到另一线程thread2,那么会出现两个线程都判断s==null,所以要在后面再判断一次
- {
- synchronized(single.class)
- {
- if(s==null)// 为什么还要再判断一次,我觉得这里可以不用再判断啊,我是这么想 的,因为如果s判断为空就创建了一个对象,这时候别的线程再来调用这个方法直接就在
- // 外部判断s不为空了,然后直接返回s。我所的对不对,求指导
-
- s =new single();
- }
- }
- return s
-
- }
-
- }
复制代码 |