如果我们在 Java 中直接调用 run() 方法会发生什么?
直接调用 Thread 对象的 run() 方法不会启动单独的线程,它可在当前线程内执行。若要从单独线程内执行 Runnable.run,请执行以下操作之一。
使用 Runnable 对象构造线程并在该 Thread 上调用 start() 方法。
定义 Thread 对象的子类并覆盖其 run() 方法的定义。然后构造该子类的实例并直接在该实例上调用 start() 方法。
示例
public class ThreadRunMethodTest { public static void main(String args[]) { MyThread runnable = new MyThread(); runnable.run(); // Call to run() method does not start a separate thread System.out.println("Main Thread"); } } class MyThread extends Thread { public void run() { try { Thread.sleep(1000); } catch (InterruptedException e) { System.out.println("Child Thread interrupted."); } System.out.println("Child Thread"); } }
在上面的示例中,主线程 ThreadRunMethodTest 使用 run() 方法调用子线程 MyThread。导致子线程在执行主线程的其余部分之前运行至完成,从而使“子线程”在“主线程”之前打印出来。
输出
Child Thread Main Thread
广告