Java是否自动针对多核处理器优化循环

一位开发人员今天告诉我,Java(或JIT)可以自动优化for循环的执行,这样它就可以使用计算机上所有可用的cpu,只要for循环的每次迭代中的代码都能在不执行的情况下执行依赖于在循环的先前迭代中修改的变量.

这是一种荒谬的一厢情愿的想法,还是有任何真相?

解决方法

不,Java不会这样做.

这可以通过编写一个有用的简单程序来验证,并检查繁忙的cpu核心数.

像这样的东西:

public static void main(String[] args) throws Exception {
    for (int i = 0 ; i < 1000000 ; i++) {
        String s = "this XXX a test".replaceAll("XXX"," is ");
    }
}

运行此操作时,您将看到只使用一个cpu核心.如果要并行化这样的东西,则需要使用多个线程,这可以使用Java 8 Stream API或使用ExecutorService轻松完成.

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...