2

Javaクラスを使用してリーキーバケットアルゴリズムによく似たものを実装することを考えており、Semaphoreそれが適切かどうか疑問に思っていました。目標は、共有リソースへの書き込み速度を制限することです。1つのスレッドで定期的にセマフォへの許可を解放し、ワーカースレッドのプールで必要なアイテムのサイズと同じ数の許可を取得しようとします。書く。

私の懸念は、が舞台裏でSemaphore単一を使用して実装されているかどうか、またはそのスペース使用量がアクティブな許可の数で線形であるかどうか(ある種の許可のキューなどを使用して実装されているかどうか)です。スペース(したがって時間)が線形である場合int、それなら私は明らかにバイト単位のレートについて話すのを避けたいと思います。それがただの場合int、私は非常に高いレートのオーバーフロー以外にそのような心配はないはずです(この場合、私はlong-backedが必要ですSemaphore

誰かアイデアはありますか?

4

1 に答える 1

2

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Semaphore.htmlから:

実際の許可オブジェクトは使用されません。Semaphore は、使用可能な数のカウントを保持し、それに応じて動作します。

ソースを確認しましたが、実際にはint(ではなくlong)によってサポートされています。

于 2013-02-26T18:43:14.220 に答える