• 欢迎访问极客公园网站,WordPress信息,WordPress教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入极客公园 QQ群
  • Git主题现已支持滚动公告栏功能,兼容其他浏览器,看到的就是咯,在后台最新消息那里用li标签添加即可。
  • 最新版Git主题已支持说说碎语功能,可像添加文章一样直接添加说说,新建说说页面即可,最后重新保存固定连接,演示地址
  • 百度口碑求点赞啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊http://koubei.baidu.com/s/gitcafe.net
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏极客公园吧

两阶段终止模式

多线程 站点默认 5年前 (2021-12-14) 1387次浏览 0个评论

介绍

话不多说,先看图理解

为什么

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

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

是什么

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

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

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

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

代码

调用

结果

 


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

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

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

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