如何终止一个正在运行的线程?
设置状态位来终止一个正在运行的线程。可以自己实现, 也可以使用 interrupt
方法来设置这个状态位, 然后在代码中判断 isInterrupted
的返回结果来执行退出执行的逻辑。
了解 Thread 类中的 stop、interrupt 方法吗?为什么不用 stop 方法来终止线程的运行呢?
stop
方法是用来强制中断线程执行的方法, 但是现在已经过时了;interrupt
方法是用来设置线程的中断状态位的, 这个状态位通过本地方法interrupt0
来设置;stop
方法已经过时了, 且stop
方法是一种恶意的中断, 一旦执行, 将会立即终止当前正在执行的线程, 而不管线程的逻辑是否会被破坏(比如说丢弃这个线程中所有用到的监视器锁、破坏线程的原子逻辑)。