我们永远不应该重写线程的 start 方法,这很安静,但是当我对两种不同的行为感到困惑时,我只是在练习 java .....我正在尝试重写 Thread 类的 start 方法。下面是代码:
package myPackage;
public class MainThreadUsingThread extends Thread{
@Override
public void run() {
System.out.println("-run in t1");
System.out.println("");
}
@Override
public void start() {
System.out.println("in start in t1");
super.start();
}
/*public static void main(String[] args) {
System.out.println("hii");
Thread t3=new Thread(new MainThreadUsingThread());
t3.start();
}*/
}
class A11 {
public static void main(String[] args) {
System.out.println("hii");
Thread t1=new Thread(new MainThreadUsingThread());
t1.start();
Thread t2=new Thread() {
@Override
public void run() {
System.out.println("run in t2");
}
@Override
public void start() {
System.out.println("in start in t2");
super.start();
}
};
t2.start();
}
}
在线程“t2”的情况下,我得到了覆盖的启动方法,但在线程“t1”的情况下却没有。请帮助我摆脱这种困惑。
在可运行接口的情况下,还有什么方法可以做同样的事情(覆盖,只要它不是一个好习惯)。