Balking Patten ------Java 多线程模式(四)

                                                     Balking Patten

                                          ------ 不需要的话,就算了 

    我现在正在餐厅吃饭,考虑要吃什么东西。

    因为我已经决定要吃什么了,所以我举手表示我想要点餐。注意到我举起手的服务生,就向我走来。

    这时,有另一位服务员也注意到我了。不过,他看到已经有一个人靠近我的座位,所以就不过来了……

    这就是Balking Patten。

   下面是在一个关于监视文件是否被修改的线程的一部分代码,警戒条件是文件是否被修改,如果被修改了就保存,如果发现文件没有被修改,就没有必要保存了,其中changed就是标志文件是否被修改的标志量。

   public synchronized void save() throws IOException{

     if(!changed){

         return ;//若发现没有被修改,直接返回。

  }

    doSave();

    changed = false ;

}

 

 

   具体怎么用,我想大家都应该很清楚了,现在我们讲讲何时可以用到这个。 

  1.不要刻意去执行的时候:

   就像上面提到的那种情况,我发现自己可以不执行,所以就直接返回,这样就提高了程序的性能。

  2.不想等到境界条件成立时:

   我们可以看到,上面的程序在判断警戒条件不成立时就立即退出了,马上进入下一步工作,这样在一定程度上提高了程序的响应性。

  3.警戒条件只有第一次成立时:

 就是在我们的程序中,警戒条件成立的机会只有一次,以后就不会再成立了,比如说我们初始化,我们可以采用这种模式来判断属性是否被初始化了,若已经被初始化了就没有必要再初始化了。

 

  我们还谈谈怎么表示balk结果:

  1.忽略balk的发生

  2.以函数返回值的方式表示balk的发生

  3.以异常的方式表示balk的发生

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值