Java 线程的 run() 和 start() 有什么区别?有什么作用?
2023-12-19 21:31:27
Java 线程的 run() 和 start() 有什么区别?有什么作用?
在 Java 中,线程的 run()
和 start()
是两个重要的方法,它们有不同的作用和用途。
run()
方法:
- 作用:
run()
方法是线程类Runnable
接口中定义的方法,用于定义线程的执行逻辑。 - 调用方式: 直接调用
run()
方法,并在当前线程中执行run()
中定义的逻辑。 - 特点: 如果直接调用
run()
方法,那么代码仍然是在当前线程中执行,不会创建新的线程。 - 适用场景: 适用于单线程环境或者希望在当前线程中执行线程逻辑的情况。
start()
方法:
- 作用:
start()
方法是Thread
类中定义的方法,用于启动线程。 - 调用方式: 调用
start()
方法,由 JVM 创建一个新的线程,并在新线程中执行run()
方法中定义的逻辑。 - 特点: 会创建新的线程,使得线程并行执行。
- 适用场景: 适用于需要并行执行的多线程环境。
代码示例:
以下是一个简单的示例,演示了 run()
和 start()
的区别:
class MyThread extends Thread {
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getId() + " Value " + i);
}
}
}
public class ThreadExample {
public static void main(String args[]) {
MyThread myThread1 = new MyThread();
MyThread myThread2 = new MyThread();
// 使用 run() 直接在当前线程中执行
myThread1.run();
myThread2.run();
// 使用 start() 创建新线程并执行
myThread1.start();
myThread2.start();
}
}
在上面的示例中,通过 run()
直接在 main
线程中执行,而通过 start()
创建新线程并执行 run()
方法。通过 start()
启动的线程会并行执行,输出结果可能交错。而通过 run()
直接调用的话,代码在当前线程中执行,不会并发。
文章来源:https://blog.csdn.net/sanmansan/article/details/135006974
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!