多執行緒程式設計細節

2021-10-19 07:51:56 字數 1228 閱讀 2109

多執行緒程式設計細節

thread類

thread類實現了runnable介面,所以thread物件也是可執行runnable物件,同時thread類也是執行緒類

構造器常見方法:

runnable介面

runnable介面只定義了乙個方法public void run(),這個方法要求實現runnable介面的類實現,runnable物件稱 為可執行物件,乙個執行緒的執行就是執行該物件的run()方法

run()方法沒有返回值void,而且不能丟擲異常

callable介面

繼承thread或實現runnable介面這2種方式都有乙個缺陷就是:在執行完任務之後無法獲取執行結果。

如果需要獲取執行結果,就必須通過共享變數或者使用執行緒通訊的方式來達到效果,這樣使用起來就比較麻煩。

call()方法有返回值,這個返回值可以通過泛型進行約束,允許丟擲異常

future介面

future表示乙個任務的生命週期,並提供了方法來判斷是否已經完成或取消以及獲取任務的結果和取消任務等

future就是對於具體的runnable或者callable任務的執行結果進行取消、查詢是否完成、獲取結果。必要時可以通 過get方法獲取執行結果,該方法會阻塞直到任務返回結果。

futuretask

futuretask實現了兩個介面,runnable和future,所以它既可以作為runnable被執行緒執行,又可以作為future得 到callable的返回值

futuretask是乙個可取消的非同步計算,futuretask 實現了future的基本方法,提供start cancel 操作,可以查詢 計算是否已經完成,並且可以獲取計算的結果。結果只可以在計算完成之後獲取,get方法會阻塞當計算沒有完成 的時候,一旦計算已經完成, 那麼計算就不能再次啟動或是取消。

乙個futuretask 可以用來包裝乙個 callable 或是乙個runnable物件。因為furturetask實現了runnable方法,所 以乙個 futuretask可以提交(submit)給乙個excutor執行(excution). 它同時實現了callable, 所以也可以作為future 得到callable的返回值。

多執行緒細節解析

在學習完多執行緒後,分析一下一下兩種方法建立4個執行緒的不同之處!建立執行緒方法1 public static void main 建立執行緒方法2 public static void main 方法1和方法2都是建立了4個執行緒,類mythread實現了runnable介面 方法1是用for迴圈...

多執行緒細節講解

一般run方法執行完,執行緒應該正常結束,但是常常有些執行緒是伺服執行緒 即只有獲得某種訊號,才會停止的執行緒 最常見的就是在while迴圈當中的執行緒,設定乙個boolean型別的標誌,來退出迴圈。之所以使用volatile關鍵字,是為了是exit同步。執行緒處於阻塞狀態,呼叫interrupt方...

多執行緒程式設計

1 多執行緒的基本思路不是在介面執行緒執行費時的 而是專門啟動乙個執行緒 稱作工作執行緒 來完成,介面執行緒只負責介面的 顯示 和操作,而工作執行緒只負責耗時的操作過程。2 對於普通的win32應用程式來說,執行緒可以分為兩種 介面 ui user inte ce 執行緒和工作執行緒。介面執行緒一般...