0

JAVAで以下のコードを作成するExecutorService と、誰かがその仕組みを説明できますExecutorServiceか?

ExecutorService executor = Executors.newFixedThreadPool(400);

    for (int i = 0; i < 500; i++) {
        Runnable worker = new MyRunnable(10000000L + i);
        executor.execute(worker);
    }

単一の作業キューがあり、for ループがRunnableこのキューに 500 のタスクを追加すると思います。これExecutorServiceで、400 スレッドのスレッド プールで が作成されました。

キュー内の 500 個のタスクのうち、400 個のスレッドがExecutorServiceこの 400 個のタスクを一度に実行し、残りのスロットは解放されるのでしょうか?

私の理解は正しいですか?

4

2 に答える 2

2

JavaDoc newFixedThreadPool

無制限の共有キューで動作する固定数のスレッドを再利用するスレッド プールを作成します。どの時点でも、最大で nThreads スレッドがアクティブな処理タスクになります。すべてのスレッドがアクティブなときに追加のタスクが送信されると、それらのタスクは、スレッドが使用可能になるまでキューで待機します。シャットダウン前の実行中に障害が発生していずれかのスレッドが終了した場合、必要に応じて後続のタスクを実行するために新しいスレッドが代わりに使用されます。プール内のスレッドは、明示的にシャットダウンされるまで存在します。

于 2012-10-13T23:57:26.183 に答える