码迷,mamicode.com
首页 > 编程语言 > 详细

为什么java线程不推荐调用stop,suspend,resume方法

时间:2015-09-16 18:21:40      阅读:329      评论:0      收藏:0      [点我收藏+]

标签:

一、stop

    stop方法不推荐调用,官方说发是“可能发生不可预测的问题”。其实线程在调用stop方法后,会停止自己。线程停止的时候,会直接停止执行,并释放自己正在使用的锁资源。问题出在这里,如果线程拿到锁,只执行了几步,还剩几步没有执行完,如果此时释放锁,其他线程重新接管,可能导致线程不安全的事情发生。并且这种问题几乎无法Debug。

二、suspend和resume方法

    这两个方法必须要成对出现,否则非常容易发生死锁,因为suspend方法并不会释放锁。如果不能保证之后会有人调用resume方法,会导致线程永远挂起。其次,suspend和resume方法通常不一定是一个线程来顺序执行。有可能一个线程来suspend另一个线程来resume,而如果没有处理好线程间的调用顺序,非常可能发生,resume发生在suspend之前,这样又会导致线程suspend之后,永远没有人来resume他,发生“线程冻结”的场景。

为什么java线程不推荐调用stop,suspend,resume方法

标签:

原文地址:http://my.oschina.net/u/1047640/blog/506901

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!