您的位置:首页 > 其它

设计模式

2014-01-04 14:12 197 查看


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

单例---饿汉式:

Single类一进内存,就已经创建好了对象。

class Single

{

 private static Single s = new Single();

 private Single(){}

 public static Single getInstance()

 {

  return s;

 }

}

饿汉式,书写简单,而且是线程安全的,建议使用这种方式.
单例---懒汉式:

Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象.

对象是方法被调用时,才初始化,也叫做对象的延时加载.

class Single

{

 private static Single s = null;

 private Single(){}

 public static Single getInstance()

 {

  if(s==null) //使用双重判断,来减少对锁的访问次数.

  {

   synchronized(Single.class)

   {    

    if(s==null)

     s = new Single();

   }

  }

  return s;

 }

}

懒汉式,会产生线程安全的问题,可能产生多个实例对象,所以加锁以后,才能安全,代码麻烦,不建议使用.
懒汉式,将会形成面试的诸多考点:

1.延迟加载

2.线程安全问题,同步代码块和静态同步函数都行.

3.加同步的时候,使用的锁是哪一个?静态函数,肯定不能用this,用的是该类的Class对象.

4.双重判断+同步代码块,提高程序的效率.

5请写一个延迟加载的单例模式.

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


         
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: