【Java】调用 start()方法时会执行 run()方法,那怎么不直接调用 run()方法?(约226字)

调用 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() 方法在这个新线程中执行。

三分恶面渣逆袭:start方法

THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容