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

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

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

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

类图

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

JAVA标准库实例

ThreadPoolExecutor

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值