繁体   English   中英

在单处理器上使用Java fork join框架

[英]Using Java fork join framework on single processor

我已经开始使用fj JAVA框架了。
据我所知,它只是将算法计算等大任务划分为小线程。
问题是,是否值得在单处理器机器上使用此框架。
谢谢

没有。

单个处理器(单个单核处理器)不能使用多个线程,因为它一次只能运行一个线程。 实际上,线程管理的开销会使计算速度降低一些。

相关:您可以在运行时获取应用程序可用的处理器数量。 请参见Runtime.availableProcessors()

通常,您在运行时使用处理器数来确定执行的配置。

即使你有一个核心机器,你也可以在一次执行多个线程,因此你可以使用fe fork-join来利用它。 如果你的cpu上只有一个执行线程,那么使用多线程框架与普通执行相比,你将获得一小笔开销。

另一方面:如果您在单个核心计算机上编写应用程序并且没有任何利润,您可以稍后使用其他计算机,或将应用程序提供给具有多核/线程计算机的用户。 如果没有再次构建应用程序或更改任何内容,您可以使用这些功能。

所以它实际上取决于您希望现在使用您的应用程序的方式 - 以及将来。

正如在oracle文档中编写的JAVA FORK / JOIN

fork / join框架是ExecutorService接口的一个实现,可帮助您利用多个处理器。 它专为可以递归分解成小块的工作而设计。 目标是使用所有可用的处理能力来提高应用程序的性能。

所以它的主要目标是多处理器架构。

如果存在大量IO操作,多线程在单核处理器上仍然有用。 否则它甚至会受到伤害。

每个处理器都有一个线程调度程序,可以为一个单独的线程分配时间来完成其工作。 因此,如果您有100个线程并且只有一个处理器,则调度程序将只在这100个线程之间切换。 然而,话虽如此,在单个处理器上使用多个线程没有任何优势,因为正如我所描述的那样,它实际上发生的事情是调度程序只是在线程之间切换非常快。 另外,从CPU的角度来看,上下文切换非常慢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM