Time complexity java中的简单for循环如何能够使用所有可用的内核?

Time complexity java中的简单for循环如何能够使用所有可用的内核?,time-complexity,Time Complexity,欢迎大家 我今天用LinkedList运行了一个简单的计算复杂性测试: public static void main(String[] args) { List<Byte> list = new LinkedList<>(); for (int j = 0; j < 50_000_000; j++) { list.add((byte) j); } for (int j = 1; j < 10; j++)

欢迎大家

我今天用LinkedList运行了一个简单的计算复杂性测试:

public static void main(String[] args) {

    List<Byte> list = new LinkedList<>();

    for (int j = 0; j < 50_000_000; j++) {
        list.add((byte) j);
    }

    for (int j = 1; j < 10; j++) {
        long t1 = System.currentTimeMillis();
        list.get(5_000_000 * j - 1);
        long t2 = System.currentTimeMillis();

        System.out.println("Percent of the problem: " + j * 10 + ", time: "
                + (t2 - t1));
    }

}
publicstaticvoidmain(字符串[]args){
列表=新建LinkedList();
对于(int j=0;j<50_000;j++){
列表.添加((字节)j);
}
对于(int j=1;j<10;j++){
long t1=System.currentTimeMillis();
列表。获取(5_000_000*j-1);
long t2=System.currentTimeMillis();
System.out.println(“问题的百分比:+j*10+”,时间:
+(t2-t1));
}
}

虽然我注意到在使用对象填充列表的过程中,CPU的所有核心都被100%使用,但我有4+4个超线程。Java是否真的使用了多个线程来填充列表?

我可以确认这是在使用我计算机上的所有四个内核。这很奇怪……JVM很可能有其他线程运行,用于自己的目的——垃圾收集、JIT编译等。。。因此,您的JVM可能一直在使用所有内核,但它可能不是直接由您的代码执行的……我怀疑的是,CPU是由GC线程将对象从Eden空间移动到旧一代所消耗的。今天我将尝试证明这一点。JVM不会简单地抛出OfMemoryException,它会首先尝试获得一些内存空闲,这会消耗CPU。