2012-04-07 89 views
2

我想正常关闭线程。我在网上看到很多代码,并在这里查询。 我认为有两种关机的方法。中断Java中的线程

  1. 使用布尔标志。一旦标志chnages,我们可以在运行方法中破坏代码。
  2. 使用中断方法。

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

回答

5

没有什么错boolean标志,但是:

  • 你需要记住的同步/能见度(至少在标志放volatile

  • 为什么增加一个额外的标志,当一个已经实施(interrupted)?

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

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