並行プログラムで、競合状態に陥ることなく BlockingQueue からオブジェクトを取得する最良の方法は何ですか? 現在、次のことを行っていますが、それが最善の方法であるとは確信していません。
BlockingQueue<Violation> vQueue;
/*
in the constructor I pass in a BlockingQueue object
full of violations that need to be processed - cut out for brevity
*/
Violation v;
while ( ( v = vQueue.poll(500, TimeUnit.MILLISECONDS) ) != null ) {
// do stuff with the violation
}
私はまだ競合状態に陥っていません...しかし、これが本当に安全かどうかはわかりません.