Java线程stop和suspend的废弃

转载 2011年01月13日 14:06:00

 

 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结构特性的时候才使用他们。

 

转自http://oracledb.blog.sohu.com/143288917.html

java多线程(八)为什么弃用stop和suspend

初始的java版本中定义了一个stop方法来终止一个线程还定义了一个suspend方法来阻塞一个线程,直到另一个线程调用resume方法。这两个方法在Java SE 1.2之后就被弃用了,因为这两种方...
  • xingjiarong
  • xingjiarong
  • 2015年08月27日 09:12
  • 4254

Java线程stop和suspend的废弃

JDK1.0定义了stop和suspend方法,stop用来直接终止线程,suspend会阻塞线程直到另一个线程调用resume. stop和suspend都有一些共同的点:都试图专横的控制一个给定...
  • madlife4
  • madlife4
  • 2016年03月09日 13:47
  • 113

Java线程stop和suspend的废弃

JDK1.0定义了stop和suspend方法,stop用来直接终止线程,suspend会阻塞线程直到另一个线程调用resume. stop和suspend都有一些共同的点:都试图专横的控制一个给定...
  • wei_ya_wen
  • wei_ya_wen
  • 2013年03月01日 16:45
  • 601

java 线程stop和suspend的废弃

JDK1.0定义了stop和suspend方法,stop用来直接终止线程,suspend会阻塞线程直到另一个线程调用resume. stop和suspend都有一些共同的点:都试图专横的控制一个给定...
  • zq789908
  • zq789908
  • 2015年03月25日 09:34
  • 257

java 线程stop和suspend的废弃

JDK1.0定义了stop和suspend方法,stop用来直接终止线程,suspend会阻塞线程直到另一个线程调用resume. stop和suspend都有一些共同的点:都试图专横的控制一个给定...
  • qilixiang012
  • qilixiang012
  • 2015年03月23日 09:31
  • 552

java线程的suspend()、stop()方法废弃原因

转载自:http://blog.csdn.net/blackwuxin/article/details/7261201 JDK1.0定义了stop和suspend方法,stop用来直...
  • shw372029857
  • shw372029857
  • 2015年09月11日 16:59
  • 358

为什么线程会放弃Suspend和Resume方法

记录一下,多久没看youku了哦,有斗鱼,有乐视,还有翻墙,真的很久没打开优酷了 百度一下, 说什么 “suspend()方法就是将一个线程挂起(暂停),resume()方法就是将一个挂起线程复...
  • avi9111
  • avi9111
  • 2016年04月25日 02:34
  • 1784

java thread的stop,suspend,resume等方法废弃的原因

如下是官方文档,先贴上,抽时间完善 Why Are Thread.stop, Thread.suspend,  Thread.resume and Runtime.runFinaliz...
  • gediseer
  • gediseer
  • 2016年12月23日 09:23
  • 8670

java中有几种方法可以实现一个线程?用什么关键字修饰同步方法 stop()和suspend()方法为何不推荐使用?

java5以前,有两种实现方法,分别使用new Thread()和new Thread(runnable)形式,第一种继承Thread类,直接调用thread的run方法,所以,我们往往使用Threa...
  • Amen_Wu
  • Amen_Wu
  • 2017年01月04日 23:22
  • 1404

为什么不使用suspend和stop方法

JDK1.0定义了stop和suspend方法: stop用来直接终止线程,suspend会阻塞线程直到另一个线程调用resume. stop和suspend都有一些共同的点:都试图专横的控制一个...
  • u012036312
  • u012036312
  • 2015年08月27日 11:22
  • 867
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java线程stop和suspend的废弃
举报原因:
原因补充:

(最多只允许输入30个字)