Java线程之Guarded Suspension Pattern和Balking Pattern

 

Guarded Suspension Pattern的参与者: GuardedObject参与者


GuardedObject参与者是一个拥有被防卫的方法(guardedMethod)的类。在guardedMethod方法中,会有一个警戒条件,当该警戒条件满足时,该方法就行马上继续执行,但是当警戒条件不满足时,就会开始等待。


警戒条件的成立与否,会随GuardedObject参与者的状态变化而变化。
此为,GuardedObject参与者还可能会提供一个用来更改实例状态(特别是用来更改警戒条件)的方法(stateChangingMethod)。

 

在Java语言中,是使用while语句与wait方法来实现guardedMethod的。
如:
 while(!警戒条件){
 try{
  wait();
  }catch(Exception e){}
 }
stateChangingMethod的实现是通过notify/notifyAll来完成的。
例如:
 stateChangingMethod(){
 ... // 更改状态
 
 notifyAll();
 }
 
Balking Pattern:

 

当现在不适合进行这个操作,或者没有必要进行这个操作时,就直接放弃这个操作而回去,这就是Balking Pattern。

 

Balking Pattern与Guarded Suspension Pattern一样,都需要警戒条件,不同在于,在Balking Pattern中,当警戒条件不成立时,就立马中断,而Guarded Suspension Pattern则是等待到可以执行时再去执行相应的操作。

 

Balking Pattern在何时适用:
1. 不需要刻意去执行的时候,一般是为了提高程序的执行性能
2. 不想等待警戒条件成立时,可以提供程序的响应性
3. 警戒条件只有第一次成立时,这样对应的代码只会执行一次,因为警戒条件不成立了以后,就绝对不会再次成立了。

 

表达Balk结果的方式:
1. 忽略balk的发生
2. 以返回值表达balk的发生
3. 以异常表达balk的发生


 

你可能感兴趣的:(java,exception,语言)