为什么我们调用 Thread.start() 方法,而后者又调用 run 方法?

2022-09-01 00:42:49

为什么我们调用线程对象的方法,而线程对象又调用方法,为什么不直接调用方法呢?start()run()run()


答案 1

[...]为什么不直接调用run()方法?

该方法只是一个普通方法(由覆盖)。与任何其他普通方法一样,直接调用它将导致当前线程执行 。run()run()

所有的魔法都发生在里面。该方法将导致 JVM 生成一个新线程,并使新生成的线程执行 。start()start()run()


答案 2

如果直接调用 run() 方法,则其主体在当前线程的上下文中执行。调用方法时,将创建一个新线程,并在此新线程中执行方法。start()run()