run()
方法和 start()
方法之间的区别是至关重要的。本文将深入探讨如果直接调用线程的 run()
方法会发生什么。直接调用 run() 方法不会启动一个新的线程,它只是普通方法调用,代码在当前线程中同步顺序执行。
Thread
类、实现Runnable
接口两种方式来实现线程,无论使用哪种方式,都需要重写 run()
方法,这是线程执行的入口点。启动一个线程通常使用 Thread
对象的 start()
方法,该方法会触发线程的启动,并最终调 用run()
方法。run()
方法 vs start()
方法run()
方法run()
方法包含了线程要执行的代码。run()
方法不会启动一个新线程,它只是在当前线程中执行run()
方法体中的代码。run()
方法相当于调用一个普通的方法,没有并发行为。start()
方法start()
方法会创建一个新的线程,并在新的线程中执行run()
方法。start()
方法会使线程从“新建”状态变为“就绪”状态,等待CPU调度。run()
方法的影响run()
方法的影响,考虑以下示例代码:class MyThread extends Thread {
public void run() {
System.out.println("Thread is running");
}
}
public class Main {
public static void main(String[] args) {
MyThread thread = new MyThread();
// 直接调用run()方法
thread.run();
// 调用start()方法
thread.start();
}
}
thread.run()
和 thread.start()
的行为是完全不同的。run()
方法start()
方法class MyRunnable implements Runnable {
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("Runnable running " + i);
}
}
}
public class Main {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
// 直接调用run()方法
myRunnable.run();
// 调用start()方法
thread.start();
}
}
// 输出
Runnable running 0
Runnable running 1
Runnable running 2
Runnable running 3
Runnable running 4
Runnable running 0
Runnable running 1
Runnable running 2
Runnable running 3
Runnable running 4
myRunnable.run()
直接调用产生的,后五行是 thread.start()
启动的新线程产生的。run()
方法不会启动一个新的线程,它只是普通方法调用,代码在当前线程中同步顺序执行。而调用 start()
方法则会启动一个新的线程,并在该线程中执行 run()
方法的代码。👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
🚀 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。
🧠 作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。
💡 在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。
🌐 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。
📖 保持关注我的博客,让我们共同追求技术卓越。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。