用Java中断线程

时间:2012-04-07 17:51:45

标签: java multithreading

我想优雅地关闭线程。我在互联网上看到很多代码,并在这里查询。 我认为有两种方法可以关闭。

  1. 使用布尔标志。一旦标记为chnages,我们就可以在run方法中破解代码。
  2. 使用中断方法。
  3. 我的问题为什么要避免使用布尔标志来优雅地关闭线程,当我运行示例程序时,它运行良好。

1 个答案:

答案 0 :(得分:5)

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

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

  • 为什么在已经实施一个标志时添加额外标志(interrupted)?

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

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