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

标签 java parallel-processing

像查找 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/

相关文章:

使用机器人类的 Java 屏幕捕获

sql-server - 对并行查询的 native TSQL 支持

java - GWT 中共享包的重要性

java - 在 Eclipse 中找不到调试器的空闲套接字

java - 软键盘弹出时禁用后退按钮,Android

java - 扫描仪类方法

parallel-processing - 避免在 OpenShift/Kubernetes 集群中并行处理 pod

c++ - 使用 TBB 的并行性——我们的 list 中应该包含什么?

C++ 中断 omp 并行

sql - Oracle 12c - 我们可以在将数据插入表而不是整个表时锁定分区吗?