1

いくつかのリソースへの接続をプールする必要があります。この議論では、実際のリソースは重要ではありません。ただし、これらの接続はスレッドセーフではないため、接続などのプーリングの必要性は高価な操作であることに注意してください。

私の最初のアイデアは、接続のタイムアウトを管理し、それらを強制終了するなどの1つの大きなプールでした。ただし、問題は、各接続に異なるパラメーターが含まれている可能性があるため、接続を取得するときに、パラメーターを渡してプーラーにこれを使用させる必要があることです。同じ値を持つ接続を見つけようとします。それ(プール)がオブジェクトを見つけることができなかった場合は、もちろんパラメーターを渡すインスタンスを作成する必要があります。

ただし、Apache Commons Pools やその他の同様のライブラリには、この種の概念に対する規定はありません。この種の概念を含むライブラリはありますか。Pool の下にはインスタンスのリストが保持されており、テイク リクエストが受信されると、マッチャーを使用して利用可能なオブジェクトをループし、最初に一致したオブジェクトを返します。

接続オブジェクトのパラメーターを変更することはできないため、問題と質問の理由に注意してください。

  • この問題を解決するより良い方法はありますか?
  • 上記を行うプーリングライブラリはありますか?
  • 私は自分自身を書くべきですか?
4

4 に答える 4

1

最初に鍵を使ってプールを見つけてみませんか? 次に、利用可能なソリューションの 1 つを使用します。キーが異なるアイテムは相互互換性がないため、すべてをプールしようとして単純化することはないと思います。

于 2011-01-14T03:03:54.690 に答える
0

オブジェクトがスレッドセーフでない場合、なぜプールするのでしょうか? とにかく、プールマネージャーはステータスを確認したり、他のスレッドからそれらを閉じたりすることはできません。

を使用して、各スレッドに 1 つのコピーを保持するだけThreadLocalです。

于 2011-01-14T03:03:56.560 に答える
0

KeyedObjectPool が答えです。例を見たい場合は、これを見てください

于 2013-02-12T20:15:15.497 に答える
0

Apache Pool のKeyedObjectPoolを確認していただけますか?

于 2011-02-01T03:25:07.377 に答える