《Java多线程编程实战》——第5章 Two-phase Termination(两阶段终止)模式

Two-phase Termination模式通过将停止线程分解为准备阶段执行阶段两个阶段,提供了一种通用的优雅停止线程的方法。
准备阶段:通知目标线程准备进行停止。

  • 设置标志变量。
  • 调用目标线程的interrupt方法。
  • 对于能够对interrupt方法调用做出响应的方法,目标线程代码可以通过捕获这些方法的InterruptException来侦测线程停止信号。
  • 对于不对interrupt方法调用做出响应的方法,需要手动处理。

执行阶段:检查准备阶段设置的线程停止标志和信号,在此基础上决定线程停止的时机,并进行适当的“清理”操作。

类图

用户线程在系统停止过程中,如果没有停止则会阻止JVM正常关闭。所以,在系统停止过程中我们必须主动停止用户线程,而非依赖JVM。
Two-phase Termination模式使得我们可以对各种形式的目标线程进行优雅的停止。如目标线程调用了能够对interrupt方法调用做出响应的阻塞方法、目标线程调用了不能对interrupt方法调用做出响应的阻塞方法、目标线程作为消费者处理其他线程生产的“产品”在其停止前需要处理完现有“产品”等。

JAVA标准库实例

ThreadPoolExecutor

猜你喜欢

转载自blog.csdn.net/wsjtwmy/article/details/84348880
今日推荐