前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >被废弃的 Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit

被废弃的 Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit

作者头像
老白
发布2018-03-19 16:15:01
1.2K0
发布2018-03-19 16:15:01
举报
文章被收录于专栏:架构之路架构之路

最近学习多线程的知识,看到API里说这些方法被废弃了,就查了一下原因

Thread.stop

这个方法会解除被加锁的对象的锁,因而可能造成这些对象处于不一致的状态,而且这个方法造成的ThreadDeath异常不像其他的检查期异常一样被捕获。

可以使用interrupt方法代替。事实上,如果一个方法不能被interrupt,那stop方法也不会起作用。

Thread.suspend, Thread.resume

这俩方法有造成死锁的危险。使用suspend时,并不会释放锁;而如果我想先获取该锁,再进行resume,就会造成死锁。

可以使用object的wait和notify方法代替。wait方法会释放持有的锁。

Runtime.runFinalizersOnExit 

这个方法本身就是不安全的。它可能导致终结器(finallizers)被在活动对象上被调用,而其他线程正在并发操作这些对象。而且,这个调用不是“线程安全”的,因为它设置了一个VM全局标志。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-08-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Thread.stop
  • Thread.suspend, Thread.resume
  • Runtime.runFinalizersOnExit 
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档