终止线程
参考:
方式一 通过volatile标识去判断退出线程
不推荐
理由:把开关停止的时候,无法停止线程。因为thread.put的时候发生了阻塞,被叫醒之前没办法进行下个任务。
方式二 使用stop()方法去退出线程
不推荐
理由:suspend暂停线程的时候不会释放锁,线程中公共数据(static)不同步。
方法四 使用interrupt方法中断线程(建议)
在interrupt使用上,如果interrupt监听到了中断信号,可以通过isInterrupted()方法来判断,或者捕获InterruptedException异常来处理。
这些需要注意的是
- 再抛出异常时,不要生吞异常。
- 如果可以处理此异常,请完成清理工作后退出。
- 不处理此异常,不继续执行任务则需要重新抛出。
- 不处理此异常,继续执行任务,则需要捕获到异常之后恢复中断标记(交由后续的程序检查中断)