在Java中中断线程
我想优雅地关闭线程。我在网上看到很多代码,这里有查询。 我认为关闭有两种方法在Java中中断线程,java,multithreading,Java,Multithreading,我想优雅地关闭线程。我在网上看到很多代码,这里有查询。 我认为关闭有两种方法 使用布尔标志。一旦标记更改,我们可以在run方法中中断代码 中断方法的使用 我的问题是,为什么避免使用布尔标志优雅地关闭线程,当我运行示例程序时,它运行得很好。布尔标志没有问题,但是: 您需要记住同步/可见性(至少将volatile放在标志上) 为什么要在已经实现(中断)的情况下添加额外的标志 其他库/容器可能会试图中断您的线程(毕竟,它们不知道您的标志!),因此您仍然需要支持InterruptedException
我的问题是,为什么避免使用布尔标志优雅地关闭线程,当我运行示例程序时,它运行得很好。布尔标志没有问题,但是:
- 您需要记住同步/可见性(至少将
放在标志上)volatile
- 为什么要在已经实现(
)的情况下添加额外的标志中断
- 其他库/容器可能会试图中断您的线程(毕竟,它们不知道您的标志!),因此您仍然需要支持
和/或InterruptedException
标志isInterrupted()
- 中断线程还可以中断I/O调用和
。您的自定义标志无法显示thread.sleep()