Java多线程编程实战指南:设计模式篇(第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第4章
Guarded Suspension(保护性暂挂)模式

4.1 Guarded Suspension模式简介

在多线程编程中,为了提高并发性,往往将一个任务分解为不同的部分,将其交由不同的线程来执行。当这些线程间相互协作时,仍然可能会出现一个线程等待另一个线程完成一定的操作后其自身才能继续运行的情形。这好比汽车行驶过程中油量不足,司机只好到加油站等工作人员将油加满后才能继续行驶。

Guarded Suspension模式可以帮助我们解决上述等待问题。该模式的核心思想是,如果某个线程在执行特定的操作前需要满足一定的条件,则在该条件未满足时将该线程暂停运行(即暂挂线程,使其处于等待(WAITING)状态,直到该条件满足,才继续运行该线程)。在这里,读者可能会想到wait/notify[1]。的确,wait/notify可以用来实现Guarded Suspension模式。但是,Guarded Suspension模式还要解决wait/notify所解决的问题之外的问题。