次のことを行うスタンドアロンの Java アプリケーションを作成するタスクがあります。
- .csv ファイルを解析します。(これには約 300 万件のレコードが含まれます)
- レコードごとに、複数の DB テーブルに最大 15 行を挿入します。
- .csv レコードが正常に処理されたかどうかを出力します。
これを設計するための私の現在の考えは次のとおりです。
- .csv ファイルを読み取ります (この手順についてはまだあまり考えていません)。
- .csv のレコードごとに作業/タスク オブジェクトを作成します。これらすべてのタスク オブジェクトをキュー/リストに入れます。
- 事前定義された数のスレッドを作成します (Executor フレームワークを使用しない古い学校)
各スレッドには次のロジックがあります。
- DB接続を作成します。
if(getNextJobFromList() != null)
// Prepare and insert the statements in a batch update.
- DB リソースを閉じます。
- 出力のステータスを与える
ここでは時間は非常に大きな制約です。
今質問:
Executor フレームワークを使用してこれを高速化できますか? 私の疑似コードでは、スレッドはその存続期間中 DB 接続を維持します。Executor フレームワークでこれを行うことはできますか?
これを最適化する他の方法はありますか?
前もって感謝します :)