多线程——java中的主线程总是比其他新线程运行得快吗?

nnvyjq4y  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(498)

这个问题在这里已经有答案了

如何用java编写正确的微基准测试(11个答案)
4个月前关门了。
看看下面的代码,它总是显示“主线程完成”。

private static class Person{
        private String name;
    }

    public static void main(String[] args) throws InterruptedException {
        final Person person = new Person();

        new Thread(()->{

            System.out.println("new Thread Done");
            //person.name = "Jack";

        }).start();

        //person.name = "Tom";

        System.out.println("Main Thread Done");

        //System.out.println(person.name);
    }

我的问题是,为什么主线程总是比新线程运行得快?结果“new thread done”是否可能?我在windows、centos、macos上都试过,都是“主线程完成”。我没有发现任何文件说java中的主线程总是比其他任何线程都快。

ocebsuys

ocebsuys1#

主线程首先开始旋转出一个需要旋转的线程,然后转到它的print语句。当第二个线程正在旋转时,第一个线程正在完成。它更快,因为它首先开始。然后第二个线程(在原始代码中,在编辑之前)被 Package 在try语句中,这会增加一点开销。
不过,正如其他人所说的,它并不总是按照这个顺序完成,但是您可能会看到,由于上述原因,当它在相同的系统上以相同的状态运行时,它以这种顺序半可靠地执行。

相关问题