take()でブロックしているBlockingQueueに割り込む方法は?
からオブジェクトをBlockingQueue取得take()し、連続ループで呼び出すことによってそれらを処理するクラスがあります。ある時点で、これ以上オブジェクトがキューに追加されないことがわかりました。take()メソッドを中断してブロックを停止するにはどうすればよいですか? オブジェクトを処理するクラスは次のとおりです。 public class MyObjHandler implements Runnable { private final BlockingQueue<MyObj> queue; public class MyObjHandler(BlockingQueue queue) { this.queue = queue; } public void run() { try { while (true) { MyObj obj = queue.take(); // process obj here // ... } } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } } …