2011-07-15 15 views
0

サイズプールの接続プールを維持し、プール内の各接続へのアクセスを制御するサイズNのセマフォーを持っています。アプリケーションは、データを送信しようとするとセマフォを取得し、応答またはソケットのタイムアウトを受信したときに解放します。セマフォーを使用した接続プールの管理(Java)

各接続に対して定期的なハートビートを送信する接続プール内で実行されるバックグラウンドスレッドがあります。今度はハートビートが失敗すると、その接続は閉じられ、新しいものを作成するように努力します。プール内の接続数が直接反映されるように許可を増減する必要があります。私はreducePermits(m)APIを使用して許可を減らすことはできますが、増加させるには、セマフォだけで何回もrelease()を呼び出しています(何も取得されていなくても)。

答えて

1

はい、release()およびrelease(int)は、利用可能な許可の数を増やすために使用する方法です。 reducePermits(int)が存在する唯一の理由は、利用可能な許可の数を減らすための非ブロッキング手段を提供することです。とにかくreleaseはブロックされないので、increasePermitsの機能は完全に冗長になります。

関連する問題