理解 Thread.start() 和 Runnable.run() 之间的区别
在 Java 并发中,Runnable 是一个接口,它定义了单个方法 run(),其中包含应在单独线程中并发执行的代码。 Thread 类封装了线程创建和管理的细节。
场景一:直接执行 Runnable
第一个示例中:
R1 r1 = new R1(); R2 r2 = new R2(); r1.run(); r2.run();
我们创建R1和R2的实例并直接调用它们的run()方法。这会在当前线程中执行代码,而不创建新线程。换句话说,R1 和 R2 在主线程中顺序运行。
场景 2:基于线程执行 Runnable
第二个示例:
R1 r1 = new R1(); R2 r2 = new R2(); Thread t1 = new Thread(r1); Thread t2 = new Thread(r2); t1.start(); t2.start();
我们再次创建 R1 和 R2 的实例,但这一次我们将它们传递给Thread,创建两个独立的线程对象。当我们调用 t1.start() 和 t2.start() 时,会生成两个新线程,每个线程分别执行 R1 和 R2 的 run() 方法。
主要区别
两个示例之间的关键区别在于线程创建。在第一种情况下,不会创建新线程,R1 和 R2 只是在现有主线程中运行。第二种场景,创建两个独立的线程,允许R1和R2并发执行。
综上所述,Runnable.run()定义了要并发执行的代码,而Thread.start()则启动一个新线程来运行该代码。方法的选择取决于您是想在新线程还是主线程中执行代码。
以上是Java 中的 `Thread.start()` 和 `Runnable.run()` 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!