理解 Thread.start() 和 Thread.run() 之间的区别
在 Java 中使用多线程时,程序员会遇到两个关键问题方法:Thread.start() 和 Thread.run()。虽然它们的名称可能暗示类似的功能,但它们的用途却截然不同。
这些方法有什么作用?
Thread.start():
Thread.run():
为什么我们不能直接调用 Thread.run ()?
如果 Thread.run() 也执行 run() 方法,为什么我们不能简单地调用这个方法而不是线程.start()?原因在于多线程提供的隔离和独立执行。
调用 Thread.run() 会在当前线程中执行代码,而不是在单独的线程中执行。这意味着 run() 方法中的任何代码仍然与当前线程中的资源交互并影响资源。这不是多线程的预期目的,多线程允许并发执行任务。
说明差异的示例:
考虑以下内容代码:
public class ThreadExample { public static void main(String[] args) { Thread t1 = new Thread(() -> System.out.println("Thread 1")); Thread t2 = new Thread(() -> System.out.println("Thread 2")); // Here, we call Thread.start() and Thread.run(): t1.start(); // Starts Thread 1 in a separate thread t2.run(); // Executes Thread 2 in the current thread System.out.println("Main Thread"); } }
输出:
Thread 1 Main Thread
在 t1 上调用 Thread.start() 创建一个新线程并在该线程中执行 run() 方法,允许它打印“线程 1”。另一方面,在 t2 上调用 Thread.run() 会在当前(即主)线程中执行 run() 方法,从而绕过新线程的创建。这会导致“线程 2”不会被打印,因为它永远不会在单独的线程中执行。
以上是为什么'Thread.start()”对于 Java 中真正的多线程至关重要?的详细内容。更多信息请关注PHP中文网其他相关文章!