我有一个有 3 个线程的应用程序,我将其切换为由 ScheduledExecutorService 管理。创建此实例时,您必须指定线程池大小,但这是什么?这是否意味着如果我计划运行 3 个任务,我应该为每个任务创建一个大小为 3 的线程池?
假设你已经创建了预定执行服务像这样
ScheduledExecutorService executorService = Executors.newFixedThreadPool(10);
executorService.execute(new Runnable() {
public void run() {
System.out.println("Asynchronous task");
}
});
executorService.shutdown();
现在这里发生了什么:
- 首先使用以下方法创建 ExecutorService
newFixedThreadPool()
工厂方法。这将创建一个线程池10 threads
执行任务。
- 其次,Runnable接口的匿名实现是
传递给execute()方法。这会导致 Runnable 成为
由 ExecutorService 中的线程之一执行。
线程池管理工作线程池。这thread pools
包含一个工作队列,其中保存等待执行的任务。
现在来到:
这是否意味着如果我计划运行 3 个任务,我应该创建一个
线程池大小为 3 个各一个?
是的,这样所有 3 个任务就可以并行执行。
现在这是一篇关于我们的线程池应该有多大? http://www.infoq.com/articles/Java-Thread-Pool-Performance-Tuning
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)