在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