ループ内で 2 つのことを行うスレッドがあります。BlockingQueue からのオブジェクトを待ってから処理します。処理ロジックには、JVM の外部で観察可能な効果があり、アトミックに実行する必要があります。
現在、このスレッドは、https://stackoverflow.com/a/10961760/499922で説明されているように、揮発性ブール変数によって制御されています。ただし、これは、消費するメッセージがキューにそれ以上ない場合、スレッドが停止しないことを意味します。「Thread.interrupt()」はアトミック操作を途中で中断する可能性があるため、これを解決するために使用することはできません。
キューのメソッドを中断するtake()
方法はありますが、他の操作はできませんか?