这个问题在这里已经有答案了:
如何用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中的主线程总是比其他任何线程都快。
1条答案
按热度按时间ocebsuys1#
主线程首先开始旋转出一个需要旋转的线程,然后转到它的print语句。当第二个线程正在旋转时,第一个线程正在完成。它更快,因为它首先开始。然后第二个线程(在原始代码中,在编辑之前)被 Package 在try语句中,这会增加一点开销。
不过,正如其他人所说的,它并不总是按照这个顺序完成,但是您可能会看到,由于上述原因,当它在相同的系统上以相同的状态运行时,它以这种顺序半可靠地执行。