我正在一台配备Intel Core i5处理器的PC上工作,据报道,该处理器有12个处理器,我相信它由6个内核组成,每个内核有两个线程.
我做了一些研究,似乎Java使用内核线程.我需要大幅提高现有Java程序的性能,并希望我能使用所有12个核心i5线程来实现这一点.
我正在try 使用IntStream().parallel.forEach()
102功能,它看起来可以用尽可能多的线程并行嵌套for()
个循环.
100
我正在一台配备Intel Core i5处理器的PC上工作,据报道,该处理器有12个处理器,我相信它由6个内核组成,每个内核有两个线程.
我做了一些研究,似乎Java使用内核线程.我需要大幅提高现有Java程序的性能,并希望我能使用所有12个核心i5线程来实现这一点.
我正在try 使用IntStream().parallel.forEach()
102功能,它看起来可以用尽可能多的线程并行嵌套for()
个循环.
100
Java并行流使用ForkJoinPool.commonPool;它计算总线程数为Runtime.getRuntime().availableProcessors()
-1(这是为了让一个处理器调用线程).
所以在你的例子中是12-1=11个处理器.
因此,您可以使用11个线程进行多线程操作.
例如,在我的系统上,我有8个可用的处理器&;我可以看到下面的操作是由7个线程执行的:
System.out.println(Runtime.getRuntime().availableProcessors());
IntStream.range(0, 1000000).parallel()
.forEach(value -> System.out.println(value + " " + Thread.currentThread().getName()));