调用 start()方法时会执行 run()方法,那怎么不直接调用 run()方法?
在 Java 中,启动一个新的线程应该调用其start()
方法,而不是直接调用run()
方法。
当调用start()
方法时,会启动一个新的线程,并让这个新线程调用run()
方法。这样,run()
方法就在新的线程中运行,从而实现多线程并发。
class MyThread extends Thread {
public void run() {
System.out.println(Thread.currentThread().getName());
}
public static void main(String[] args) {
MyThread t1 = new MyThread();
t1.start(); // 正确的方式,创建一个新线程,并在新线程中执行 run()
t1.run(); // 仅在主线程中执行 run(),没有创建新线程
}
}
如果直接调用run()
方法,那么run()
方法就在当前线程中运行,没有新的线程被创建,也就没有实现多线程的效果。
来看输出结果:
main
Thread-0
也就是说,start()
方法的调用会告诉 JVM 准备好所有必要的新线程结构,分配其所需资源,并调用线程的 run()
方法在这个新线程中执行。

THE END
暂无评论内容