像查找 2000 的阶乘这样的任务,其中使用 BigInteger 是一项 CPU 密集型任务,是否有加速此类过程的方法?
例如:找到 2000! 由于它只是一个单一的任务,我认为这里不需要线程(因为运行这个程序或在线程中运行这个任务都必须执行这种 CPU 密集型的事情)。
我听说 Java 7 为计算密集型任务引入了一种新的并行机制。 那么,我如何在其中执行此类操作?
最佳答案
通过最终合并,一个阶乘可以很容易地分成两个任务。如果您愿意,这是某种 map-reduce。
例子:
9! = (7*5*3*1) * (8*6*4*2)
所以你可以有两个任务。
这可以概括为任意数量的并行任务。
此解决方案与 Java 无关,它是关于将“常规”解决方案转换为并行解决方案。
关于java - 我们可以加速 Java 中的 CPU 密集型任务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8762259/