0

私は現在、自分のプログラムに時間優先度を実装できるスレッドセーフなプログラムを作成しようとしています。よろしければコードを共有させていただきますが、それは私の質問にとってそれほど重要ではないと思います。このプログラムの(スレッドセーフではない)バージョンを起動して実行するときにリンクリストを使用していましたが、スレッドセーフバージョンに切り替えたため、リンクリストを次のように変更しました。同時リンクキュー。問題は、キューから要素を取得する必要があることです(通常はヘッドから、場合によってはテールから)。頭の要素が特定の特性を満たしているかどうかを確認する必要があります。リンクリストバージョンでは、次のようになりました。

if (order.getQuantity()>= a.getFirst().getQuantity()){
                        Fill orderfill = new  Fill(a.getFirst().getQuantity(),a.getFirst().getLimitPrice(), order.getOrderID(),a.getFirst().getOrderID());
                        fills.add(orderfill);
                        order.setQuantity(order.getQuantity()-a.getFirst().getQuantity());
                        a.removeFirst();

ここで、「a」は私のリンクリストです。並行リンクキューに変更すると、getFirstメソッドがなくなります。リンクリストのgetFirstまたはgetLastメソッドと同じ目標を達成するキューフレンドリーなメソッドはありますか?(ご覧のとおり、オブジェクトを取得するだけで、そのオブジェクトに関連するメソッドを他の目的で使用できるようになります)。

どうもありがとう!

4

1 に答える 1

2

ConcurrentLinkedDequeを使用することをお勧めします、それは提供しgetFirst()getLast()メソッドです。

于 2012-12-08T01:54:29.003 に答える