Java 8 对线程池有哪些改进?

1,620 total views, 3 views today

Java8 中,默认创建线程池的方法多了一个——Executors.newWorkStealingPool(),newWorkStealingPool 的文档描述:

“Creates a work-stealing thread pool using all available processors as its target parallelism level.”

newWorkStealingPool 会创建一个含有足够多线程的线程池,来维持相应的并行级别,它会通过工作窃取的方式,使得多核的 CPU 不会闲置,总会有活着的线程让 CPU 去运行。

工作窃取概念(Work stealing)

工作窃取不是什么 Java 独有的东西,.NET 的 TPL 库早就存在好几年了。所谓工作窃取,指的是闲置的线程去处理本不属于它的任务。

每个处理器核,都有一个队列存储着需要完成的任务。对于多核的机器来说,当一个核对应的任务处理完毕后,就可以去帮助其他的核处理任务。

如上代码 newWorkStealingPool 方法本质上就是一个 ForkJoinPool。但是 ForkJoinPool 是 java7 中就用的东西,所以 newWorkStealingPool 其实也不是什么稀奇的东西。

 

 

 

原创文章,转载请注明出处!http://www.javathings.top/java-8对线程池有哪些改进?/

About: wusq


发表评论

电子邮件地址不会被公开。 必填项已用*标注