Java线程池大小(Executors)

时间:2015-02-10 12:08:39

标签: java multithreading

我有一个有3个线程的应用程序,我将切换到由ScheduledExecutorService管理。在创建此实例时,您必须具体指定线程池大小,但这是什么?这是否意味着如果我计划运行3个任务,我应该为每个任务创建一个3的线程池大小?

1 个答案:

答案 0 :(得分:1)

假设您已经像这样

创建了 ScheduledExecutorService
ScheduledExecutorService executorService = Executors.newFixedThreadPool(10);

executorService.execute(new Runnable() {
    public void run() {
        System.out.println("Asynchronous task");
    }
});

executorService.shutdown();

现在发生了什么:

  • 首先使用newFixedThreadPool()创建ExecutorService 工厂方法。这将创建一个10 threads的线程池 执行任务。
  • 其次,Runnable接口的匿名实现是 传递给execute()方法。这导致Runnable 由ExecutorService中的一个线程执行。
  

线程池管理工作线程池。 thread pools包含一个工作队列,用于保存等待执行的任务。

现在来了:

  

这是否意味着如果我计划运行3个任务,我应该创建一个   每个线程池大小为3个?

是的,所有3项任务都可以并行执行。

现在这里有一篇关于How big should our thread pool be?

的好文章