0
我知道有兩種方式可以創建一個新的線程,由實現Runnable接口和擴展線程類。我寫了一個實現Runnable接口的簡單程序。線程名稱與執行Runnable和擴展線程類
public class tp implements Runnable {
public void run() {
System.out.println("Hello from "+ Thread.currentThread().getName());
}
public static void main(String args[]) {
tp o1= new tp();
Thread t1 = new Thread(o1);
Thread t2 = new Thread(o1);
System.out.println(Thread.currentThread().getName());
t1.start();
t2.start();
//(new Thread(new tp())).start();
}
}
它具有以下輸出:
main
Hello from Thread-0
Hello from Thread-1
然後我擴展類。
public class tp extends Thread {
public void run() {
System.out.println("Hello from "+ Thread.currentThread().getName());
}
public static void main(String args[]) {
tp o1= new tp();
Thread t1 = new Thread(o1);
Thread t2 = new Thread(o1);
System.out.println(Thread.currentThread().getName());
t1.start();
t2.start();
//(new Thread(new tp())).start();
}
}
其產生這樣的輸出:
main
Hello from Thread-1
Hello from Thread-2
我不明白爲什麼線程的名字開始與線程0,當我實現的接口,並與線程1時,我伸出一個Thread類。
請注意,只有一種方法來創建一個線程,這是實例'線程'和'啓動'實例。 –
你描述的兩件事情_implementing'Runnable'接口和擴展'Thread' class_是定義執行線程行爲的方法。你的代碼片段都是第一種方法的例子,__plementationing'Runnable'_。雖然你已經擴展了'Thread',你只是使用子類型的一個實例作爲'Runnable'作爲'Thread'構造函數的第一個參數。爲了實現你描述的第二種方法,你必須'開始''tp'實例。 'o1.start()'。 –
不依賴於唯一以外的線程號。 – BevynQ