最佳回答
stop和suspend都有一些共同的点:都试图专横的控制一个给定了的线程的行为。从JDK1。2开始,这两个方法都被弃用了。stop天生就不安全,而经验告诉我们呢suspend方法会经常导致死锁。 stop这个方法将终止所有未结束的方法,包括run方法。当一个线程停止时候,他会立即释放所有他锁住对象上的锁。这会导致对象处于不一致的状态。假如一个方法在将钱从一个账户转移到另一个账户的过程中,在取款之后存款之前就停止了。那么现在银行对象就被破坏了。因为锁已经被释放了。当线程想终止另一个线程的时候,它无法知道何时调用stop是安全的,何时会导致对象被破坏。所以这个方法被弃用了。你应该中断一个线程而不是停止他。 suspend不会破坏对象。但是,如果你用一个suspend挂起一个有锁的线程,那么在锁恢复之前将不会被释放。如果调用suspend的方法线程试图取得相同的锁,程序就会死锁。那么在程序中该怎么样使用线程呢?建议如下:(1)最好不要使用Lock/Condition也不使用synchronized关键字。在很多情况下你可以使用java。util。concurrent包中的一种机制,它会为你处理所有的加锁。例如阻塞同步队列。(2)如果synchronized关键字在程序中可以工作,那么就尽量使用它,这样可以减少代码数量和出错的几率。
最新回答共有2条回答
-
2026-03-30 17:09:16着急的小蝴蝶
回复stop和suspend都有一些共同的点:都试图专横的控制一个给定了的线程的行为。从JDK1。2开始,这两个方法都被弃用了。stop天生就不安全,而经验告诉我们呢suspend方法会经常导致死锁。 stop这个方法将终止所有未结束的方法,包括run方法。当一个线程停止时候,他会立即释放所有他锁住对象上的锁。这会导致对象处于不一致的状态。假如一个方法在将钱从一个账户转移到另一个账户的过程中,在取款之后存款之前就停止了。那么现在银行对象就被破坏了。因为锁已经被释放了。当线程想终止另一个线程的时候,它无法知道何时调用stop是安全的,何时会导致对象被破坏。所以这个方法被弃用了。你应该中断一个线程而不是停止他。 suspend不会破坏对象。但是,如果你用一个suspend挂起一个有锁的线程,那么在锁恢复之前将不会被释放。如果调用suspend的方法线程试图取得相同的锁,程序就会死锁。那么在程序中该怎么样使用线程呢?建议如下:(1)最好不要使用Lock/Condition也不使用synchronized关键字。在很多情况下你可以使用java。util。concurrent包中的一种机制,它会为你处理所有的加锁。例如阻塞同步队列。(2)如果synchronized关键字在程序中可以工作,那么就尽量使用它,这样可以减少代码数量和出错的几率。
热门文章
- 康达学院专转本五年制
- 高考一个考场分ab卷吗
- not only but also用法
- 某物体做自由落体运动,从释放开始计时,则物体在前2s内的平均速度为______m/s,物体下落2m时的速度大小为______m/s.
- 三角函数公式大全表格
- 地理中考必背知识点2022
- 2013-2014学年小学六年级科学上学期期末考试试卷及答案
- 人教版2014-2015学年小学五年级英语第二学期期中教学质量检测试卷及答案
- 【Linux驱动开发】设备树详解(二)设备树语法详解
- 别跟客户扯细节
- 在别的城市买房子能落户吗
- 卖房前要把装修贷还完吗
- 高中政治教学提高教学效果的方法探究
- “互联网+”背景下的初中英语课堂教学改革与创新策略研究
- 2022年终止合同范本
- 租房合同范本范文
- 如何挑选土豆
- 如何挑选土鸡
