如果我们不重写Java中的线程类run()方法,将会发生什么?

Java中的run()方法

  • 在Thread类中,run()方法是用空实现定义的。

  • 如果我们run()在用户定义的线程中重写方法,则在run()方法中,我们将定义一个作业,而我们创建的线程负责执行run()方法。

  • 强烈建议您覆盖run()方法,因为它可以提高系统的性能。

  • 如果我们不在run()定义的线程中重写Thread类方法,run()则将执行Thread类方法,并且由于Thread类run()的实现为空,因此不会获得任何输出。

范例1:

在这里,我们将看到,如果我们重写Thread类的run(),会发生什么?

class OverrideRunMethod extends Thread{

	public void run(){
		System.out.println("I am in run() method");
	}
}

class MainMethodClass{

	public static void main(String[] args){
		OverrideRunMethod orn = new OverrideRunMethod();
		orn.start();
	}

}

输出结果

D:\Java Articles>java MainMethodClass
I am in run() method

范例2:

在这里,我们将看到,如果不重写Thread类run()会发生什么

abstract class NotOverridableRunMethod extends Thread{
	abstract public void run();
}

class ParentMain{
	public static void main(String[] args){
		OverrideRunMethod orn = new OverrideRunMethod();
		orn.start();
		System.out.println("Thread class run() method will be executed with empty implementation");
	}
}

当我们调用start()Thread类的方法时。它将执行一些任务,例如调用run()方法和分配线程调度程序等。run()如果run()方法不存在,首先将执行新创建的线程,然后将检查其父类(线程类)是否存在,然后run()将其方法执行。

输出结果

D:\Java Articles>java ParentMain
Thread class run() method will be executed with empty implementation
I am in run() method