转载

java多线程: 如何停止线程

和线程停止相关的三个方法

/*
中断线程。如果线程被wait(),join(),sleep()等方法阻塞,调用interrupt()会清除线程中断状态,并收到InterruptedException异常。另外interrupt();对于isAlive()返回false的线程不起作用。
*/
 public void interrupt();
    /*
    静态方法,判断线程中断状态,并且会清除线程的中断状态。所以连续多次调用该方法,第二次之后必定返回false。另外,isAlive()用于判断线程是否处于存活状态,如果isAlive()返回false,interrupted()也必定返回false。
    */
 public static boolean interrupted();
/*
判断线程中断状态,但不会清除线程中断状态。另外,isAlive()用于判断线程是否处于存活状态,如果isAlive()返回false,interrupted()也必定返回false。
*/
 public boolean isInterrupted();

线程停止的几种情况:

1: 使用退出标记,run方法执行完毕,线程正常退出。

2: 使用stop()方法,已过时的方法,不推荐。

3: 使用interrupt()方法中断线程。

interrupt()

单独调用这个方法并不能中断线程,只是打了一个中断状态的标记。或者说是将线程状态更改为中断状态。

中断线程可以通过以下几种方法。

  1. 在线程内部抛出异常。
  2. 在线程内部使用return结束线程。
原文  https://segmentfault.com/a/1190000019160432
正文到此结束
Loading...