ホームページ  >  記事  >  Java  >  Java での ThreadPoolExecutor の同時呼び出しのコード分析例

Java での ThreadPoolExecutor の同時呼び出しのコード分析例

黄舟
黄舟オリジナル
2017-05-28 09:11:132079ブラウズ

この記事では、Java ThreadPoolExecutor 同時呼び出しインスタンスの詳細な説明に関する関連情報を主に紹介します。必要な方は参照してください。

Java ThreadPoolExecutor 同時呼び出しインスタンスの詳細な説明

通常、タスクの処理速度を向上させるために、いくつかの並行性モデル
を使用し、ThreadPoolExecutor内の

すべて

を1つ呼び出します。 Code

package test.current;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;

public class TestCallable {

  public static void main(String[] args) throws InterruptedException, ExecutionException {

    List<Callable<List<Long>>> tasks = new ArrayList<>();
    for (int i = 0; i < 10; i++) {
      Callable<List<Long>> task = new Callable<List<Long>>() {
        @Override
        public List<Long> call() throws Exception {
          return Arrays.asList(1L,2L);
        }
      };

      tasks.add(task);
    }

    List<Long> finalResults = new ArrayList<>(10);
    List<Future<List<Long>>> results = ThreadPool.getThreadPool().invokeAll(tasks);
    for(Future<List<Long>> ele : results) {
      List<Long> list = ele.get();
      finalResults.addAll(list);
    }

    System.out.println(finalResults);
  }
}
package test.current;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class ThreadPool {
  private static final int CORE_SIZE = 8;

  private static final int MAX_SIZE = 12;

  private static final long KEEP_ALIVE_TIME = 30;

  private static final int QUEUE_SIZE = 50000;

  private static ThreadPoolExecutor threadPool = new ThreadPoolExecutor(CORE_SIZE, MAX_SIZE, KEEP_ALIVE_TIME,
      TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(QUEUE_SIZE), new ThreadPoolExecutor.AbortPolicy());

  public static ThreadPoolExecutor getThreadPool() {
    return threadPool;
  }
}

は、実行する必要があるタスクに対して呼び出し可能なタスクを作成し、スレッドプール内のスレッドを使用してこれらのタスクを同時に実行することで、タスクの実行効率を向上させることができます。

以上がJava での ThreadPoolExecutor の同時呼び出しのコード分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。