Thread类run()方法的重载
run() 方法的重载是可能的。但是 Thread 类的 start() 方法可以调用无参数方法。我们必须像普通方法调用一样显式调用另一个重载方法。
// Java Program to illustrate the behavior of
// run() method overloading
class Geeks extends Thread {
public void run()
{
System.out.println("GeeksforGeeks");
}
public void run(int i)
{
System.out.println("Bishal");
}
}
class Test {
public static void main(String[] args)
{
Geeks t = new Geeks();
t.start();
}
}
输出:
GeeksforGeeks
JVM为上述程序提供的运行时栈:
注意:重载的 run() 方法将被 Thread 类忽略,除非我们自己调用它。 Thread 类期望一个没有参数的 run() 并且在线程启动后将在单独的调用堆栈中执行。使用 run(int i),即使我们直接调用它,它也不会启动任何单独的调用堆栈。它将像任何其他方法一样位于同一个调用堆栈中(如果您从 run() 方法调用)。
例子:
// Java Program to illustrate the execution of
// program using main thread
class Geeks extends Thread {
public void run()
{
System.out.println("GeeksforGeeks");
}
public void run(int i)
{
System.out.println("Bishal");
}
}
class Test extends Geeks {
public static void main(String[] args)
{
Geeks t = new Geeks();
t.run(1);
}
}
输出:
Bishal
- JVM为上述程序提供的运行时栈:
![](https://mangodoc.oss-cn-beijing.aliyuncs.com/geek8geeks/Overloading_of_Thread_class_run()_method_1.png)
相关文章:Thread类start()方法的重载覆盖