1. 程式人生 > >java裡為什麼有了Thread還要設定一個Runnable?

java裡為什麼有了Thread還要設定一個Runnable?

我學習多執行緒疑惑,為什麼會有這種程式碼出現:

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() { //... } }