我看到默认ForkJoinPool.commonPool
大小比 CPU 内核数少一个线程。而且要制作自定义池,我们可以使用以下方法,
1. java.util.concurrent.ForkJoinPool.common.parallelism=30
2. ForkJoinPool fjp = new ForkJoinPool(30);
但我很难理解这实际上是如何工作的。多线程是操作系统的东西。因此,如果一个处理器有 2 个内核和 4 个线程(OperatingSystem 显示的详细信息),并且我将 Java 并行度更改为 30,它将如何与 CPU 一起工作?它将立即创建并可以同时运行的最大线程数是多少?它会同时创建 30 个线程并并行处理,还是因为 CPU 有 4 个线程,它会创建 4 个线程,一旦再次完成,又会创建 4 个这样的线程?甚至我们增加了多少并行度,甚至在 Spring Boot 的具有更高网格大小的批处理中,它是否总是取决于 CPU 内核和 CPU 的线程?提前致谢。