我有一个线程在一个循环中做两件事:等待来自 BlockingQueue 的对象,然后处理它们。处理逻辑具有可在 JVM 之外观察到的效果,并且必须以原子方式完成。
目前,该线程由 volatile 布尔变量控制,如https://stackoverflow.com/a/10961760/499922中所述。但是,这意味着如果队列中没有更多消息可供线程使用,线程将不会停止。'Thread.interrupt()` 不能用来解决这个问题,因为它可以中途中断原子操作。
有没有办法只中断take()
队列上的方法而不是任何其他操作?