繁体   English   中英

中断 Java 中的线程

[英]Interrupting a thread in Java

我想优雅地关闭线程。 我在 inte.net 上看到很多代码并在这里查询。 我认为有两种关机方法。

  1. 使用 boolean 标志。 一旦标记更改,我们就可以在 run 方法中破坏那里的代码。
  2. 使用中断方法。

我的问题是为什么避免使用 boolean 标志来正常关闭线程,当我运行示例程序时它运行良好。

boolean标志没有任何问题,但是:

  • 您需要记住同步/可见性(至少将volatile放在标志上)

  • 为什么在一个已经实现( interrupted )的情况下添加一个额外的标志?

  • 其他库/容器可能会尝试中断你的线程(毕竟,他们不知道你的标志!)所以你仍然需要支持InterruptedException和/或isInterrupted()标志

  • 中断线程也可以中断 I/O 调用和Thread.sleep() 您的自定义标志不能

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM