Java线程start()vs run()方法及示例

Java | 线程start()run()方法

当我们调用该start()方法时,它将导致创建新线程。然后,它会自动调用该run()方法。如果我们直接调用该run()方法,则不会创建新线程。该run()方法将仅在当前线程上执行。

这就是为什么我们能够多次调用run方法的原因,就像我们创建的任何其他方法一样。但是,该start()方法只能调用一次。

请看以下代码:

class MyThread extends Thread { 

public void run() 

System.out.println("Thread Running: " + Thread.currentThread().getName()); 

public class MyProg { 

public static void main(String[] args) 

MyThread t1 = new MyThread(); 

t1.start(); 

}

输出结果

Thread Running: Thread-0

我们可以清楚地看到,run()方法是在新线程上调用的,默认线程名为Thread-0

请看以下代码:

class MyThread extends Thread { 

public void run() 

System.out.println("Thread Running: " + Thread.currentThread().getName()); 

public class MyProg { 

public static void main(String[] args) 

MyThread t1 = new MyThread(); 

t1.run(); 

}

输出结果

Thread Running: main

我们可以看到在这种情况下,我们直接调用run()方法。在当前正在运行的线程-main 上调用它,并且不创建新线程。

同样,在下面的代码中,我们意识到我们只能调用一次start方法。但是,可以将run方法多次调用,因为它将被视为常规函数调用。

class MyThread extends Thread { 

public void run() 

System.out.println("Thread Running: " + Thread.currentThread().getName()); 

public class MyProg { 

public static void main(String[] args) 

MyThread t1 = new MyThread(); 

t1.run();

t1.run();

t1.start();

t1.start();

}

输出结果

Thread Running: main

Thread Running: main

Thread Running: Thread-0

Exception in thread "main" java.lang.IllegalThreadStateException

at java.base/java.lang.Thread.start(Thread.java:794)

以上是 Java线程start()vs run()方法及示例 的全部内容, 来源链接: utcz.com/z/340765.html

回到顶部