スレッドのstartメソッドをオーバーライドしてはいけないというのは静かなことですが、2つの異なる動作と混同されたときに、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」の場合、オーバーライドされたstartメソッドを取得していますが、スレッド「t1」の場合は取得していません。Plzは私がこの混乱から抜け出すのを手伝ってくれます。
また、実行可能なインターフェイスの場合に同じことを行う方法はありますか(適切な方法でない限り、オーバーライドします)。