A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 肖发腾 中级黑马   /  2012-3-29 19:53  /  1975 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

stop()和suspend()方法为何不推荐使用?知道它们不推荐使用,具体原因是什么呢?

1 个回复

倒序浏览
stop这个方法将终止所有未结束的方法,包括run方法。当一个线程停止时候,他会立即释放所有他锁住对象上的锁。这会导致对象处于不一致的状态。假如一个方法在将钱从一个账户转移到另一个账户的过程中,在取款之后存款之前就停止了。那么现在银行对象就被破坏了。因为锁已经被释放了。当线程想终止另一个线程的时候,它无法知道何时调用stop是安全的,何时会导致对象被破坏。所以这个方法被弃用了。你应该中断一个线程而不是停止他。

suspend不会破坏对象。但是,如果你用一个suspend挂起一个有锁的线程,那么在锁恢复之前将不会被释放。如果调用suspend的方法线程试图取得相同的锁,程序就会死锁。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马