乐趣区

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 结束线程。
退出移动版