Java Webapp Executors类

时间:2012-09-11 18:50:55

标签: java threadpoolexecutor

Java - webapp通过Executors类执行线程的优势在于以下代码,然后以固定池大小运行。

private ExecutorService threadRunner;
threadRunner = Executors.newFixedThreadPool(2);

threadRunner.submit(activeQueueRunner);
threadRunner.submit(standbyQueueRunner);

1 个答案:

答案 0 :(得分:2)

线程包含许多支持结构,这些结构的创建成本很高。执行程序是一次创建的线程池,但是包含所需的支持代码,可以在多个任务中重用。

换句话说,如果您只向两个大小为2的新固定线程池提交两个项目,那么您没有任何优势。将第三个项目提交到threadRunner池时会有好处,因为它会绑定到已完成任务的以前线程之一(activeQueueRunnerstandbyQueueRunner) ,并使用该线程来运用其run(...)块。

如果您将提交的任务写为永不完成,那么它们基本上不会将线程释放回池中。因此,当使用Executor类型池时,最好是制作大量快速轻量级任务,并让池分摊在整个程序运行中创建/销毁线程的昂贵成本。