我们可以重写Java中的start()方法吗?
时间:2020-01-09 10:35:06 来源:igfitidea点击:
我们可以覆盖Java中的start()方法。由于这是我们几乎不需要执行的操作,因此有些人会犹豫,实际上是否可以覆盖Thread类的start()方法。还有一个后续问题,我们重写的start()方法是否实际执行线程并调用run()方法。
Java中的覆盖start方法
是的,可以在Java中重写Thread类的start()方法。尽管几乎不需要这样做,但在极少数情况下,确实需要在调用run()方法之前执行一些逻辑。
从覆盖的start()方法中,确保我们调用super.start()方法,因为Thread类的start()方法是本机方法,并且具有与操作系统进行通信以安排线程运行的逻辑。未能调用super.start()将意味着不会调用run()方法。
覆盖 start方法示例代码
public class MyThread extends Thread { @Override public void start(){ System.out.println("In overridden start method"); // calling parent class start method super.start(); } @Override public void run() { System.out.println("In run method " + "Thread Name - " + Thread.currentThread().getName()); } public static void main(String[] args) { Thread t1 = new MyThread(); t1.start(); } }
输出:
In overridden start method In run method Thread Name - Thread-0