fork/join多线程?

rid*_*rid 2 java fork-join

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

Wug*_*Wug 5

如果您自己不包含任何限制,则不会应用任何限制,Java将尽可能多地分叉线程(可能全部为1000,具体取决于系统限制).这不太理想.如果你正在进行的计算可能有一些IO时间,但即使在大量的并发处理中也不会受到IO限制,你可能能够证明运行一个以上的线程然后可用的CPU数量.一次全部运行1000并不明智.

如果我有2个CPU并为fork/join框架安排1000个任务,那么一次最多可以执行2个任务,还是在同一个CPU上并行执行更多任务?

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