为什么不推荐使用stop和susp…

编程入门 行业动态 更新时间:2024-10-21 18:35:58

为什么不<a href=https://www.elefans.com/category/jswz/34/1770308.html style=推荐使用stop和susp…"/>

为什么不推荐使用stop和susp…

原文地址:为什么不推荐使用stop和suspend这两个方法? 作者:傲九 JDK1.0定义了stop和suspend方法,stop用来直接终止线程,suspend会阻塞线程直到另一个线程调用resume.
          stop和suspend都有一些共同的点:都试图专横的控制一个给定了的线程的行为.


 从JDK1.2开始,这两个方法都被弃用了.stop天生就不安全,而经验告诉我们呢suspend方法会经常导致死锁。

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

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

那么在程序中该怎么样使用线程呢?建议如下:
(1)最好不要使用Lock/Condition也不使用synchronized关键字。在很多情况下你可以使用java.util.concurrent包中的一种机制,它会为你处理所有的加锁。例如阻塞同步队列。
(2)如果synchronized关键字在程序中可以工作,那么就尽量使用它,这样可以减少代码数量和出错的几率。
(3)只有在非常需要Lock/Condition结构特性的时候才使用他们。

更多推荐

为什么不推荐使用stop和susp…

本文发布于:2024-03-10 05:33:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1727118.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:推荐使用   stop   susp

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!