-3
protected BlockingQueue<DataPack> queue = new ArrayBlockingQueue<DataPack>(1024);

私はかなり長い間上記のコードを使用してきましたが、完全には理解していません。つまり、必要なことを行うためにそれを使用する方法は知っていますが、arrayblockingqueue と存在する可能性のある型との違いはわかりません。 、だから誰かがこれを説明し、それぞれをいつ使用するかを説明します。また、この速度に関する情報と、より良い代替案があれば教えていただけませんか。また、データが失われる可能性はありますか? (一部のデータを失う可能性がありますが、共有されているデータの 10% ほどを失うことはありません。)

ありがとう

4

1 に答える 1

0

データを失うことはありません。そのキューはプロセス内に存在し、あるスレッドによって挿入され、別のスレッドによって取得されたオブジェクト参照を保持するだけです。これは通常の Java コレクションですが、同期 (スレッド対応/スレッドセーフ) ミューテーターを備えています。

速度に関しては、違いはほとんどないと思います。いつものように、懸念があるかどうかを測定する必要がありますが、2 つのスレッドがあるという事実は、別の場所に待機時間があり、キューの存在がそれにまったく影響を与えないことを意味すると思います。

于 2012-12-21T14:24:10.090 に答える