这不是我首选的方法,因为这会导致大量CPU消耗。
如果这实际上是您的工作代码,则只需保留该代码即可。每秒检查一次布尔值不会导致可测量的CPU负载。没有任何。
真正的问题是检查该值的线程可能由于缓存而没有看到任意长时间的更改。为了确保该值始终在线程之间同步,您需要将volatile关键字放入变量定义中,即
private volatile boolean value;
请注意,将访问置于一个
synchronized块中,例如使用其他答案中描述的基于通知的解决方案时,将具有相同的效果。

这不是我首选的方法,因为这会导致大量CPU消耗。
如果这实际上是您的工作代码,则只需保留该代码即可。每秒检查一次布尔值不会导致可测量的CPU负载。没有任何。
真正的问题是检查该值的线程可能由于缓存而没有看到任意长时间的更改。为了确保该值始终在线程之间同步,您需要将volatile关键字放入变量定义中,即
private volatile boolean value;
请注意,将访问置于一个
synchronized块中,例如使用其他答案中描述的基于通知的解决方案时,将具有相同的效果。