黑马程序员技术交流社区

标题: stop()和suspend()方法为何不推荐使用 [打印本页]

作者: 肖发腾    时间: 2012-3-29 19:53
标题: stop()和suspend()方法为何不推荐使用
stop()和suspend()方法为何不推荐使用?知道它们不推荐使用,具体原因是什么呢?
作者: 李增强    时间: 2012-3-29 23:36
stop这个方法将终止所有未结束的方法,包括run方法。当一个线程停止时候,他会立即释放所有他锁住对象上的锁。这会导致对象处于不一致的状态。假如一个方法在将钱从一个账户转移到另一个账户的过程中,在取款之后存款之前就停止了。那么现在银行对象就被破坏了。因为锁已经被释放了。当线程想终止另一个线程的时候,它无法知道何时调用stop是安全的,何时会导致对象被破坏。所以这个方法被弃用了。你应该中断一个线程而不是停止他。

suspend不会破坏对象。但是,如果你用一个suspend挂起一个有锁的线程,那么在锁恢复之前将不会被释放。如果调用suspend的方法线程试图取得相同的锁,程序就会死锁。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2