0

データベースへの静的 Java 接続があります。

1 番目のスレッド

私の静的接続では、ステートメントを作成して executeQuery() メソッドを呼び出しています。クエリの結果が非常に大きく、15 分以上待たなければならないため、この時点で待機しています。

2 番目のスレッド

同じ静的接続で createStatement() メソッドを呼び出そうとしています。そして、ここで 2 番目のスレッドがブロックされます。

この問題を解決するには多くの方法がありますが、このアプローチが機能しない理由はどこにもありません。何か案は?

4

1 に答える 1

0

Connection一般的な方法では、データベースへのシングルはSocketsメカニズムによって実装されます。あなたのシングルconnectionはある種のパイプであり、一度に1つずつ実行される具体的なクエリに使用されます。

1 つのソケットで複数のクエリとその結果が並行して送信される、このような最適で高性能なコードの実装を想像するのは困難です。このような実装は、データ パケットとの混乱を引き起こし、少なくともそれらが失われる可能性があります。

上記のコメントでkarmanautが述べたように、各ステートメントで同時に使用される DB プール、つまり接続のプールを実装する必要があります。

于 2013-03-28T14:37:43.627 に答える