在线程里stop();与interrupt()有什么不同好象都可以中断线程哦

解决方案 »

  1.   

    stop 强迫线程停止执行。 现在已经不再推荐使用 
    该方法具有固有的不安全性。用 Thread.stop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查 ThreadDeath 异常的一个自然后果)。如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致任意的行为。stop 的许多使用都应由只修改某些变量以指示目标线程应该停止运行的代码来取代。目标线程应定期检查该变量,并且如果该变量指示它要停止运行,则从其运行方法依次返回。如果目标线程等待很长时间(例如基于一个条件变量),则应使用 interrupt 方法来中断该等待。有关更多信息,请参阅《为何不赞成使用 Thread.stop、Thread.suspend 和 Thread.resume?》。 
      

  2.   

    trd.start();
    System.out.println(trd);

    trd.interrupt();
    System.out.println(trd);

    2次输出的结果一样,怎么线程没被中断呢
      

  3.   

    如果说interrupt()是往一个正在睡觉的人头上泼一盆凉水的话,那么stop()就是一棒子直接把那个人打死了。stop()是强制中段线程,现在已经不推荐使用。
    interrupt()相对来说还温柔些,会让你把打开的资源挨个关闭。