我想优雅地关闭线程。我在互联网上看到很多代码,并在这里查询。 我认为有两种方法可以关闭。
我的问题为什么要避免使用布尔标志来优雅地关闭线程,当我运行示例程序时,它运行良好。
答案 0 :(得分:5)
boolean
标志没有任何问题,但是:
您需要记住同步/可见性(至少将volatile
放在标志上)
为什么在已经实施一个标志时添加额外标志(interrupted
)?
其他库/容器可能会试图打断你的线程(毕竟,他们不知道你的标志!)所以你仍然需要支持InterruptedException
和/或isInterrupted()
标志
中断线程也可以中断I / O调用和Thread.sleep()
。您的自定义标志不能