java裡為什麼有了Thread還要設定一個Runnable?
阿新 • • 發佈:2019-01-07
我學習多執行緒疑惑,為什麼會有這種程式碼出現:
public static void main(String[] args) {
Thread t = new Thread(new Runnable() {
public void run() {
System.out.println("this is a runnable");
}
}
);
t.start();
}
不是有個更簡便的方法嗎?
Thread t = new Thread() {
public void run() {
System.out.println("this is a thread");
}
};
t.start();
雖然很容易知道Runnable是個介面,而Thread是Runnable的一個具體實現。但是既然concurrent包中只有Thread一個類實現,那些Runnable這個介面到底有什麼用?
答案就是使用者可能會使用到多類繼承,但是這在java中是禁止,只能用interface實現。比如我想設計一個任務佇列,然後這個任務可以隨時開啟一個執行緒執行。
class TaskQueue <T> extends LinkedList<T> implements Runnable {
@Override
public void run() {
//...
}
}