固定サイズのキューをJavaで作成しようとしていますが、キューに最大10個のオブジェクトしか格納しません。ただし、キューはオブジェクトの格納/追加を継続し、条件を無視します。固定サイズのキューを取得する方法
私のコード:
Queue<Customer> sitt = new LinkedList<Customer>();
if(sitt.size() < 10) {
System.out.println("Added");
((LinkedList<Customer>)sitt).offer(cust);
}else {
System.out.println("No space..");
}
私は別のRunnableクラスを持っている、と私は22個のスレッドを実行しています。この条件は、顧客クラスのオブジェクトを0-9
だけ追加する必要があります。ただし、sitt.size()
は20を超えることもあります。 if
の状態さえも無視されています。
P.S:ここではキューを使用している理由は、FIFOが必要なためです。
なぜLinkedListを使用しますか?単純な円形バッファも機能します – Domso
http://stackoverflow.com/questions/9580457/fifo-class-in-java – Stefan
マルチスレッドのシナリオであるため、if条件を入れて同期ブロックに追加する必要があります。他のスレッドが要素を追加する前に、他のスレッドがキューのサイズをチェックしている可能性があります。 – Karura91