私は約900のタスクを持っています。スレッドプール数を50に設定しました。 ループを実行してすべてのタスクをexecutorServiceに送信しています。すぐにコントロールが各タスクは、私は2つの質問エグゼクティブサービスにはいくつかのタスクがありません
を持ってaverage.Nowに約1秒かかります
for (Entry<String, String> CurrentJob : Tasks.entrySet()) {
m_service.submit(new MyTask(CurrentJob.getValue(), CurrentJob.getKey()));
}
m_service.shutdown();
以下のように私はa)のほぼすべてのそれらのは、仕事をしているシャットダウンを呼び出して出てくるよう
(850)、約50が失われる。私は呼び出し可能にデバッガを置いていますが、コントロールはそれらの特定のタスクのためにそこに来ていません。私がそれらを個別に置くなら、彼らは働きますが。エグゼクティブサービスのどのロジックが欠けていますか?
b)私はこのコードの周りに、そしてjavaDocに従ってタイマーを入れました。シャットダウンは、すべてのスレッドが完了するまで待つべきですが、私のタイマーは常に時間がゼロになると言います。
いいえ。それは、制御が0秒で終了し、私の仕事が3〜4分後にも完了し続けるので起こらない。 私は引数のためだけに、shutdownをawaitTerminationに置き換えました。 – user2449952