我们可以加速java中的CPU密集型任务吗?

cyp*_*aya 5 java parallel-processing

像查找使用BigInteger的因子2000这样的任务是一项CPU密集型任务,无论如何都要加速这样的过程?

例如:找到2000!由于它只是一个单独的任务,我认为这里不需要线程(因为运行此程序或在线程中运行此任务都必须执行此类CPU密集型操作).

我听说Java 7为计算密集型任务引入了一种新的并行机制.那么,我如何在其中执行此类事情?

Ron*_*ein 12

通过最终合并,可以很容易地将因子分解为两个任务.如果你愿意,这是某种map-reduce.

例:

9! = (7*5*3*1) * (8*6*4*2)
Run Code Online (Sandbox Code Playgroud)

所以你可以有两个任务.

这可以推广到任何数量的并行任务中.

这个解决方案与Java没有任何关系,它是关于将"常规"解决方案转换为并行解决方案.