就拿这个程序为例。
public class GetCurrentThread implements Runnable {
Thread th;
public GetCurrentThread(String threadName) {
th = new Thread(this,threadName); //<----DOUBT
System.out.println("get threadname "+th.getName());
th.start();
}
public void run() {
System.out.println(th.getName()+" is starting.....");
System.out.println("Current thread name : " + Thread.currentThread().getName());
}
public static void main(String args[]) {
System.out.println("Current thread name : " + Thread.currentThread().getName());
new GetCurrentThread("1st Thread");
//new GetCurrentThread("2nd Thread");
}
}
首先,這是一個建構函數,SDK說明如下
兩個參數Runnable和String類型,你的GetCurrentThread實作了Runnable接口,這裡的this是代表目前對象,剛好這裡的目前物件是一個Runnable。
Thread要的不是
this
,它要一個Runnable
,在你的程式碼裡,剛好this
是一個Runnable
,所以就這麼寫了。