為何說只有 1 種實現執行緒的方法?

2021-10-19 11:35:39 字數 1437 閱讀 6184

實現 runnable 介面

public class runnablethread implements runnable 

}

繼承 thread 類

public class extendsthread extends thread 

}

執行緒池建立執行緒

深入解析執行緒池中的原始碼,來看看執行緒池是怎麼實現執行緒的?

static class defaultthreadfactory implements threadfactory 

public thread newthread(runnable r) 

}

有返回值的 callable 建立執行緒

class callabletask implements callable

}//建立執行緒池

executorservice service = executors.newfixedthreadpool(10);

//提交任務,並用 future提交返回結果

futurefuture = service.submit(new callabletask());

定時器 timer

class timerthread extends thread
匿名內部類建立執行緒

/**

*描述:匿名內部類建立執行緒

*/new thread(new runnable() 

}).start();

new thread(() -> system.out.println(thread.currentthread().getname())).start();
關於這個問題,我們先不聚焦為什麼說建立執行緒只有一種方式,先認為有兩種建立執行緒的方式,而其他的建立方式,比如執行緒池或是定時器,它們僅僅是在 new thread() 外做了一層封裝,如果我們把這些都叫作一種新的方式,那麼建立執行緒的方式便會千變萬化、層出不窮,比如 jdk 更新了,它可能會多出幾個類,會把 new thread() 重新封裝,表面上看又會是一種新的實現執行緒的方式,透過現象看本質,開啟封裝後,會發現它們最終都是基於 runnable 介面或繼承 thread 類實現的。

@override

public void run() 

}

因此,兩種建立執行緒方式本質上是一樣的,它們的不同點僅僅在於實現執行緒執行內容的不同,那麼執行內容來自於**呢?

只有一種實現多執行緒的方式 ?

執行緒是實現多執行緒的基礎,本篇主要講解關於執行緒的兩個問題。1 為什麼說本質上只有一種實現多執行緒的方式?2 實現runnable的方式和繼承thread的方式哪種好?好在 為什麼說本質上只有一種實現多執行緒的方式?1 實現runnable介面的方式class runnableimpl runna...

3種實現執行緒的方法

1.通過繼承thread實現執行緒 public class mythread extends thread public static void main string args 2.通過實現runnable實現執行緒 public class runnabledemo implements ru...

三種實現執行緒的方法

1.通過繼承thread實現執行緒 public class mythread extends thread public static void main string args 2.通過實現runnable實現執行緒 public class runnabledemo implements ru...