1

私はList<Map<String,String>>ieを持っています。マップのリスト。各マップにはFile NameasKeyFile ContentasがありValueます。

上記のリストには 25 万ルピー以上のマップがあります。私の要件は、このリストを反復処理し、各マップ キーと値を読み取る出力フォルダーにファイルを作成することです。したがって、最終的には 250 万個のファイルが作成されます。4時間以上かかります。次に、プログラムを停止します。25lakh のレコード全体に対してプログラムを実行した場合にかかる正確な時間はわかりません。

マルチスレッドを使用してこれを最適化する必要があります。

Javaを使用してこれを最適化するにはどうすればよいですかExecutors/ Fork/ Join(私は持っていますJava 7

4

4 に答える 4

4

単一のディスクにファイルを書き込んでいる場合、スレッドを追加しても実際には役に立たないと思います。プログラムは IO バウンドであり、CPU を集中的に使用しません。

于 2013-04-10T19:35:17.067 に答える
0

ThreadPoolExecutorとRunnableを実装するクラスを使用できます。

public class Processor implements Runnable {
    private final Map<String, String> map;

    public Processor(Map<String, String> map) {
        this.map = map;
    }

    public void run() {
        // Do work here
    }
}

ThreadPoolExecutor executor = new ThreadPoolExecutor();
for(Map<String, String> map : list) {
    executor.execute(new Processor(map));
}
于 2013-04-10T19:36:12.520 に答える