我有一个有3个线程的应用程序,我将切换到由ScheduledExecutorService管理。在创建此实例时,您必须具体指定线程池大小,但这是什么?这是否意味着如果我计划运行3个任务,我应该为每个任务创建一个3的线程池大小?
答案 0 :(得分:1)
假设您已经像这样
创建了 ScheduledExecutorServiceScheduledExecutorService executorService = Executors.newFixedThreadPool(10);
executorService.execute(new Runnable() {
public void run() {
System.out.println("Asynchronous task");
}
});
executorService.shutdown();
现在发生了什么:
newFixedThreadPool()
创建ExecutorService
工厂方法。这将创建一个10 threads
的线程池
执行任务。线程池管理工作线程池。
thread pools
包含一个工作队列,用于保存等待执行的任务。
现在来了:
这是否意味着如果我计划运行3个任务,我应该创建一个 每个线程池大小为3个?
是的,所有3项任务都可以并行执行。
现在这里有一篇关于How big should our thread pool be?
的好文章