Java - webapp通过Executors类执行线程的优势是什么,如下面的代码,而不是以固定的池大小运行。
private ExecutorService threadRunner;
threadRunner = Executors.newFixedThreadPool(2);
threadRunner.submit(activeQueueRunner);
threadRunner.submit(standbyQueueRunner);发布于 2012-09-12 02:58:05
线程包含大量的支持结构,这些结构的创建成本很高。Executor是一次创建的线程池,但被包装在所需的支持代码中,以便在多个任务之间重用。
换句话说,如果您只向大小为2的新固定线程池提交两个项目,则没有任何优势。当您将第三个项目提交到threadRunner池时,好处就来了,因为它将绑定到已完成任务的前一个线程(activeQueueRunner或standbyQueueRunner),并使用该线程来执行其run(...)块。
如果您将提交的任务编写为永不完成,则它们基本上永远不会将线程释放回池。因此,在使用Executor类型的池时,最好创建大量快速的轻量级任务,并让池在整个程序运行过程中分摊创建/销毁线程的昂贵成本。
https://stackoverflow.com/questions/12376075
复制相似问题