私のアプリケーションでは、要素を追加する4PriorityBlockingQueue
つのスレッドと、そこから要素をポーリングする1つのスレッドがあります。ポーリングスレッドの場合、キューにアクセスできないようです。スレッドセーフにするための対策を講じる必要があると思います。
最初の要素を取得した後、キューをクリアすると、他の4つの充填スレッドによって再び充填されるはずです。
ポーリングスレッドと入力スレッドは、を保持する同じクラス内にありますPriorityBlockingQueue
。
これがポーリングのコードです。
private class UPPainter implements Runnable {
@Override
public void run() {
while(queue.size() > 0) {
ReceivedMsg msg = queue.poll();
queue.clear();
for(final IPacketListener c : listeners) {
new Thread(new ListenerUp(c, msg)).start();
}
}
}
}