Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想优雅地关闭线程。我在互联网上看到了很多代码,并在这里进行了查询。我认为有两种关闭方法。
我的问题是为什么要避免使用布尔标志来优雅地关闭线程,当我运行示例程序时它运行良好。
但是,flag 没有任何问题boolean:
boolean
您需要记住同步/可见性(至少要挂上volatile标志)
volatile
为什么在已经实现的情况下添加一个额外的标志(interrupted)?
interrupted
其他库/容器可能会尝试中断您的线程(毕竟,他们不知道您的标志!)所以您仍然需要支持InterruptedException和/或isInterrupted()标志
InterruptedException
isInterrupted()
中断线程也可以中断 I/O 调用和Thread.sleep(). 您的自定义标志不能
Thread.sleep()