私のアプリケーションは、複数のスレッドで複数のクエリを実行します。Apache DBCPを使用したマルチスレッド
今はすべてのクエリに対して新しい接続を作成しています。効率を向上させるためにプールを使用したいと考えています。
Apache DBCPプールは複数のスレッドで同時に動作することができますか、スレッドごとにいくつかの同期化されたメソッドで "ブロック"できますか?
ブロックすると、別のものを使用できますか?この記事で
UPDATE:linkは次のように述べています
をすべてのOracle JDBC APIメソッドが同期化されているので二つのスレッド が同時に接続オブジェクトを使用しようとすると、その後1は になります他の人が使用を終えるまで待たされました。
だから私はDBCPがそれに対処できないと思いますか?
また、各スレッドが接続を要求し、スレッドが新しい接続を毎回生成するため(スレッドの一部が終了して接続を返すまで)、このシナリオではプールが役に立たないことを認識していますプール)
以下の大きな回答を補足するために、 'getConnection()'がブロックする唯一の時間はプールに 'Connection'がもうない場合です。しかし、トランザクションが完了するとすぐに、 'Connection'がプールに返され、' getConnection() 'は有効な' Connection'インスタンスを返します。これらのすべては、プールの構成によって異なります。 – Jeach