黑马程序员技术交流社区

标题: 分享哈懒汉式&同步加锁问题 [打印本页]

作者: java—family    时间: 2014-7-21 12:10
标题: 分享哈懒汉式&同步加锁问题
懒汉式:
class  Single{
       private static  Single s = null;
       private  static    Single(){};
       public   static    Single   getIntance(){              //这里面有一个问题,在多现程执行红色语句时。有线程安全问题。
                                                                                  //   1.“s”是共享数据, 2.有多条语句在操作“s”那么就存在线程安全,所以要加锁。
                           if(s==null){
                                       s= new Single();
                                       return  s;

                              }
      }

}
.....................................................................................................
class  Single{
       private static  Single s = null;
       private  static    Single(){};
       public   static  synchronized  Single   getIntance(){                         //解决办法1:把函数加为同步函数    知道这个synchronized的锁是什么吗?
                                                                                                                   //this ? 不是  ,这是静态函数:没有this  他的锁是(Single. class)
                           if(s==null){                                                                    //这样写程序每次进来都要判断锁,效率低。
                                       s= new Single();
                                       return  s;

                              }
      }

}

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
class  Single{
       private static  Single s = null;                                                   这样写效率更高。
       private  static    Single(){};
       public   static    Single   getIntance(){
                    if(s==null)  
                     {
                        synchronizde(Single.class)
                           {
                           if(s==null){
                                       s= new Single();


                                             }
                            }   
                      }
                       return  s;
                }

}

我们自己写饿汉式的    考试一般考这个     共勉。。。。。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2