0

特定の学生IDの挿入を実行する特定の学生IDのロードプロセスを実行するコードがあります。まったく同じ手順を実行する必要がある約 500 の学生 ID があります。ここでマルチスレッドを使用したかったのは、学生 ID ne のデータを 1 つずつロードしたくなかったからです。このシナリオでマルチスレッドを使用するにはどうすればよいですか、またはこのシナリオでマルチスレッドが役立ちますか。ここでは、この巨大なコードをマルチスレッドでどのように使用できますか。

4

3 に答える 3

4

ここではマルチスレッドを使用しないでください。それは単純な作業を必要とし、それをはるかに複雑にします. 500 レコードの場合は、一度に 1 つずつ実行します。どうしても必要な場合は、JDBC バッチ処理を使用してデータベース ヒット数を減らしてください。

于 2012-04-11T04:22:53.927 に答える
0

データベースへの並列アクセスのパフォーマンスが本当に必要だと感じている場合は、次のものが必要になります。

  • ThreadPool保持するスレッド数を制限してを使用するには。
  • 各スレッドはThreadLocal、データベースへの接続を保持する必要があります。
  • 各スレッドはThreadLocal、挿入を実行するステートメントを保持する必要があります。

単純ではありませんが、確実に実行できます。本当にそれを行う必要があるかどうかを確認してください。最初にバッチ処理を調査して、それが役立つかどうかを確認する価値があります。

興味があれば、後でここにサンプルコードを投稿しようとします。

于 2012-04-11T16:15:59.483 に答える
0

「プロデューサー/コンシューマー」パターンでうまく機能するもののように聞こえます。それに関するウィキペディアの記事には、妥当な Java の例があります。

http://en.wikipedia.org/wiki/Producer-consumer_problem

また、各スレッドに独自のデータベース接続があることを確認してください (通常、スレッドセーフではありません)。

于 2012-04-11T05:08:04.413 に答える