设计模式


---------------------------------------------------------------------------------------------------
单例---饿汉式:
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请写一个延迟加载的单例模式.
-----------------------------------------------------------------------------------------------------

         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值