Java アプリケーションを高速化するには?
Cobolファイルを1行ずつ解析し、必要なデータを抽出してDB2データベースに入力するJavaアプリケーションに取り組んでいます。
解析するファイルがさらにある場合、アプリケーションが完了するまでに 24 時間以上かかるため、これは許容できません。
だから私はスピードアップのために別のスレッドでいくつかのテーブルの作成を行います..eg
ArrayList list = (ArrayList)vList.clone();
ThreadPopulator populator = new ThreadPopulator(connection, list, srcMbr);
Thread thread = new Thread(populator);
thread.run();
return;
And ThreadPopulator class is implementing Runnable interface and run method as
public void run()
{
try
{
synchronized (this)
{
int len = Utils.length(list);
for (int i = 0; i < len; i++)
{
.....
stmt.addBatch();
if ((i + 1) % 5000 == 0)
stmt.executeBatch(); // Execute every 5000 items.
}
}
}
catch (Throwable e)
{
e.printStackTrace():
}
finally
{
if (list != null)
list.clear();
}
}
注: 次のスレッドがエントリを消去できないように、クローンを使用する必要があります。
私は正しい方法で考えていますか?
何千もの COBOL ファイルよりもアプリケーションを高速化するためにどのような方法を選択する必要があるか教えてください。