• 欢迎访问废江网站,承蒙遇见 QQ群
  • 本站将致力于推送优质的java知识以及算法,开源代码!

两阶段终止模式

多线程 站点默认 2年前 (2021-12-14) 1303次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

介绍

话不多说,先看图理解

为什么

为什么,需要这个模式呢?存在的意义是什么?

作用是优雅的停止一个线程,让其有“料理后事”的功能。有人会说,我用stop()方法,不是一样可以停止这个线程吗?这是不可行的,因为会直接正杀死线程,如果这时线程锁住了共享资源,那么当它被杀死后就再也没有机会释放锁,其它线程将永远无法获取锁。所以,两阶段终止模式就来啦!

是什么

这个模式主要就是基于线程中的打断方法interrupt():如果打断的是sleep,wait,join,则会导致该线程抛出打断异常,并清楚打断标记。如果打断这在运行的线程,则会设置打断标记为true。这个两阶段也正是指该线程处于的两种阶段,一种是正常运行,一种是sleep等阻塞状态。

isinterrupted()判断当前线程是否被打断,不会清楚打断标记

interupted()判断当前线程是否被打断,会清楚打断标记(不常用)

ok,通过上面这两个方法,就可以实现,让线程自己去优雅的停止。

代码

调用

结果

 


废江博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:两阶段终止模式
喜欢 (1)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址