Java-并发.08.多线程设计模式

Guarded Suspension 模式

Guarded Suspension 模式: guarded 是“被保护着的”、“被防卫着的”意思,suspension 则是“暂停”的意思。当现在并不适合马上执行某个操作时,让要执行该操作的线程等待。

public synchronized Request getRequest() {
while (queue.size() <= 0) { // _警戒条件(guard condition)_
try {
wait();
} catch (InterruptedException e) {
}
}
return (Request)queue.removeFirst();
}

@ref Java多线程基础(五)——Guarded Suspension模式 - 透彻理解Java并发编程 - SegmentFault 思否

Balking 模式

Balking是“退缩不前”的意思。Balking Pattern和Guarded Suspension Pattern 一样需要警戒条件。在Balking Pattern中,当警戒条件不成立时,会马上中断,而Guarded Suspension Pattern 则是等待到可以执行时再去执行。

@ref Java多线程基础(六)——Balking模式 - 透彻理解Java并发编程 - SegmentFault 思否

Two -phase Termination 模式

两段式终止: 当某个工作收到 shutdown 之类的指令后,不是立刻停止,而是进入一个“已收到终止请求”的状态,可以进行一些资源回收,这一步完成后,再进入“终止处理中”的状态

// 若数据有修改,则保存,否则直接返回
public synchronized void save() throws IOException {
if (!changed) {
System.out.println(Thread.currentThread().getName() + " balks");
return;
}
doSave();
changed = false;
}

@ref Java多线程基础(十二)——Two-phase Termination模式 - 透彻理解Java并发编程 - SegmentFault 思否