请拒绝使用Thread.stop,Thread.suspend和Thread.resume方法

 

Thread.stop:这个方法在本质上是不安全的。使用该方法来停掉一个线程将会导致该线程解开它锁住的所有监视器。如果受这些保护的监视器对象之一处于不一致的状态,被破坏的对象对其它线程可见,潜在地导致任意的行为。stop方法的一个替代品是:改变一些变量来表明目标线程是否应该停止运行。目标线程应该定期检查这个变量,如果该变量表明该线程应该停止运行,那么该线程应该从run方法中返回。如果目标线程等待很长一段时间(比如一个条件变量),应该使用interrupt方法来中断该等待。

 

 

Thread.suspend:这个方法本质上有死锁的倾向。如果目标线程拥有一个锁,该锁保护一个临界区。当该线程暂停时,其它线程不能访问该资源,直到目标线程被继续进行(resume)。如果一个线程将要继续进行(resume)目标线程,但如果它试图获取该监视器的锁,而不是调用resume方法,死锁将会发生。此类死锁通常表现为"冻结"进程。

 

Thread.resume:这个方法是和suspend配对使用的,可惜它也是容易产生死锁的。



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐
  • —软件人才免语言低担保 赴美带薪读研!—



你可能感兴趣的:(thread,stop,thread)