java开启线程的方法_Java有几种方法开启线程?怎么实现带有返回值的线程?
Java有幾種方法開啟線程?怎么實現帶有返回值的線程?
發布時間:2020-05-22 11:20:08
來源:億速云
閱讀:238
作者:Leah
Java有幾種方法開啟線程?怎么實現帶有返回值的線程?這些問題可能是我們日常工作會見到的。通過這些問題,希望你能收獲更多。下面是揭開這些問題的詳細內容。
一:無返回值類型的
1:繼承Thread類
2:實現Runnable接口
這兩種是大家常用的,代碼demo就截圖吧。
1:繼承Thread類的寫法
定義:一個類型需要extends thread類,然后實現thread類的run方法。
編輯
2:實現Runnable接口的寫法:
定義一個類,實現Runable接口,重新run方法。
New個thread對象,使用有參構造器,參數是runnable的。然后thread.start()
編輯
二:帶有返回值的
3:實現Callable接口
操作步驟:
一個類實現Callable接口,重新call方法;
在調用的時候,需要使用FutureTask這個類的有參構造,然后再使用thread的有參構造。
最后調用task的get方法。
代碼如下:
編輯
運行結果:
編輯
Callable返回值的源碼:
我們從FutureTask這個類入手,因為返回值就是從FutureTask中獲取的。來看看類關系圖:
編輯
FutureTask實現了RunnableFuture接口,RunnableFuture接口繼承了Future和Runnable接口。
編輯
編輯
我們看RunnableFuture這個接口的時候,發現只有一個無返回值的run方法。那么,線程返回的數據是哪個類實現的呢?其實就在FutureTask類里面。我們在來看看FuntrueTask這個類:
編輯
重新了run方法。最后,有個set result。既然有set方法。在來看看demo中task.get()方法:
編輯
Get方法就帶有返回值的。
至此,實現callable接口帶有返回值的原因已經找到了。
4:使用線程池創建線程
使用線程池創建的線程,可以有返回值,也可以沒有返回值。使用Executory這個頂級接口來處理。
我們先來看看Executor接口的關系。如下圖:
編輯
其中看到了熟悉的ThreadPoolExecutor和ScheduledThreadPoolExecutor
4.1:使用Executor創建沒有返回值得線程:
編輯
說明:這里不帶返回值的,其實就是調用了Runnable的run方法。
4.2:帶有返回值的demo
創建一個類,實現Callable接口。如下圖:
編輯
通過這個接口,我們知道是有返回值的。
Java中實現線程有4種方式:
我們最熟悉的不帶換回值的兩種以及帶有返回值的兩種。分別是:
Thread、Runnable和Callable以及線程池
關于開啟java線程和實現帶有返回值線程的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果喜歡這篇文章,不如把它分享出去讓更多的人看到。
總結
以上是生活随笔為你收集整理的java开启线程的方法_Java有几种方法开启线程?怎么实现带有返回值的线程?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python读取xml标注坐标_遍历文件
- 下一篇: go与Java微服务对比_微服务架构对比