终止线程


参考:

方式一 通过volatile标识去判断退出线程

不推荐

理由:把开关停止的时候,无法停止线程。因为thread.put的时候发生了阻塞,被叫醒之前没办法进行下个任务。

方式二 使用stop()方法去退出线程

不推荐

理由:suspend暂停线程的时候不会释放锁,线程中公共数据(static)不同步。

方法四 使用interrupt方法中断线程(建议)

在interrupt使用上,如果interrupt监听到了中断信号,可以通过isInterrupted()方法来判断,或者捕获InterruptedException异常来处理。
这些需要注意的是

    • 再抛出异常时,不要生吞异常。
    • 如果可以处理此异常,请完成清理工作后退出。
    • 不处理此异常,不继续执行任务则需要重新抛出。
    • 不处理此异常,继续执行任务,则需要捕获到异常之后恢复中断标记(交由后续的程序检查中断)