java - fork/join 是多线程的吗?

标签 java fork-join

如果我有 2 个 CPU 并为 fork/join 框架调度 1000 个任务,那么这些任务一次最多执行 2 个,还是会在同一 CPU 上并行执行更多任务? (比如说,也许一个任务正在等待 I/O,在这种情况下 CPU 将变得空闲,另一个线程可以运行)

最佳答案

如果您自己不包含任何限制,则不会应用任何限制,并且 Java 将 fork 尽可能多的线程(可能全部 1000 个,具体取决于系统限制)。这并不理想。如果您正在进行的计算可能需要一些 IO 时间,但即使在大量并发处理的情况下也不会受到 IO 限制,那么您可能可以证明在可用 CPU 数量之外再运行一个线程是合理的。一次运行所有 1000 个并不明智。

If I have 2 CPUs and schedule 1000 tasks for the fork / join framework to work on, will the tasks be executed in a maximum of 2 at a time, or will more tasks be executed in parallel on the same CPU?

如果您有双核 CPU,实际上一次只能执行 2 个线程。

关于java - fork/join 是多线程的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11369593/

相关文章:

java - 将arraylist对象的某些参数显示到Android中的 ListView 中

java - Java Swing 对象静态初始化的首选习惯用法?

java - 将 App Engine 数据存储区低级 API 与 Java 结合使用

groovy - fork /连接计算

java - scala.concurrent.forkjoin.ForkJoinPool 与 java.util.concurrent.ForkJoinPool

java - Soap with CXF,设置SSL和TLS协议(protocol)版本

java - 采集接口(interface)

Java 7 ForkJoinTask 和 Akka 2.0

java - Java Fork-Join (Java 8) 中的意外可伸缩性结果

angular - 在 forkJoin 中使用 mergeMap 来获取一个依赖于另一个的可观察对象