如果我有 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/