我已经开始使用fj JAVA框架了
据我所知,它只是分算算法计算等大任务并将其划分为
小线程。
问题是,是否值得在单处理器机器上使用此框架
感谢
答案 0 :(得分:2)
没有
单个处理器(单个单核处理器)无法使用多个线程,因为它一次只能运行一个线程。实际上,线程管理的开销会降低你的计算速度。
相关:您可以在运行时获取应用程序可用的处理器数量。请参阅Runtime.availableProcessors()
。
答案 1 :(得分:1)
通常在运行时使用处理器数来确定执行的配置。
即使你有一台核心机器,你也可以一次执行多个线程,因此你可以使用f.e.的fork-join。 如果你的cpu上只有一个执行线程,那么使用多线程框架与普通执行相比,你将有一个小的开销。
另一方面:如果您在单个核心计算机上编写应用程序并且没有从中获利,您可以稍后使用其他计算机,或将应用程序提供给具有多核/线程计算机的用户。无需再次构建应用程序或更改任何内容,您就可以利用这些功能。
所以这实际上取决于您希望现在使用您的应用程序的方式 - 以及将来。
答案 2 :(得分:1)
如oracle文档JAVA FORK/JOIN中所述:
fork / join框架是ExecutorService接口的一个实现,可帮助您利用多个处理器。它专为可以递归分解成小块的工作而设计。目标是使用所有可用的处理能力来提高应用程序的性能。
所以它的主要目标是多处理器架构。
答案 3 :(得分:0)
如果存在大量IO操作,多线程在单核处理器上仍然有用。否则它甚至会受到伤害。
答案 4 :(得分:0)
每个处理器都有一个线程调度程序,可以为 一个 线程分配时间来完成其工作。因此,如果您有100个线程并且只有一个处理器,则调度程序将只在这100个线程之间切换。然而,话虽如此,在单个处理器上使用多个线程没有任何优势,因为正如我所描述的那样,它实际上发生的事情是调度程序只是在线程之间切换非常快。另外,从CPU的角度来看,上下文切换非常慢。