自定義乙個類,繼承thread類
重寫run方法,run方法中用於定義當前執行緒的執行邏輯。
建立執行緒類的物件
開啟執行緒 thread類中start()方法啟動執行緒
/**
* 此案例展示第一種建立執行緒之方法:繼承thread類
* 說明:
* 1.若 static 修飾 i,則共享i
* * 關於thread中的幾個方法:
* 1.雖然main()也是乙個執行緒,但若需要thread中的函式,如yiled()或sleep()
* 也需要繼承thread,其本身不具有。
* 需要先返回當前執行緒物件。
* 3.getname()是thread類中的方法,若只是實現了runnable介面,也需要先返回
* 當前執行緒物件才能使用
* 4.sleep() yiled()是thread中的靜態方法
*/public class firstthread extends thread
}public static void main(string args) throws interruptedexception }}
}
ⅱ. 實現runnable介面
自定義乙個類 實現runnable介面。
實現run方法。
建立乙個自定義執行緒類的物件,但是該物件身上沒有start啟動執行緒的方法;可以建立thread物件,將自定義執行緒類的物件作為引數傳入構造方法中。
呼叫start方法啟動執行緒
/**
* 此案例展示建立執行緒的第二種方法:實現runnable介面
* 其實現類僅作為thread類的target。(把run()包裝成乙個thread類)
* * 說明:此方法中雖然new了兩個類物件,但都作為了乙個thread類的target
* 所以共享了變數i
* */
public class secendthread implements runnable
}public static void main(string args) }}
}
ⅲ. 實現runnable介面
自定義乙個類 實現callable介面
實現call方法 call方法中包含的是執行緒執行邏輯**
executors獲取執行緒服務物件
呼叫執行緒服務物件submit,將自定義執行緒物件傳給submit方法的引數;submit返回值為future型別,call方法的返回值就包含在future物件中;可以通過future的get方法獲取返回值物件
public class threaddemo2
}//自定義執行緒--方式三
class mythread2 implements callable
}
只有方法一需要繼承thread類,不如後兩者。
只有方法三可以有返回值,可以丟擲異常。
callable通過泛型來定義返回結果型別。在實際開發過程中和runnable相似,如果需要執行結果那麼使用callable。
runnable
callable
返回值沒有
通過泛型來定義返回值型別
啟動方式
1.通過thread直接啟動
2.通過執行緒池的execute或者submit方法啟動
1.通過futuretask轉化成runnable之後再通過thread啟動
2.通過執行緒池的submit方法啟動
⭐異常處理
1.不允許拋異常,那麼就無法通過全域性方法來處理。
允許拋異常,能通過全域性方式來統一處理。
多執行緒程式設計(一) 執行緒建立和退出
一 引言 二 例項 以下例項中建立了2個執行緒,其中第乙個執行緒是在程式執行到中途時呼叫pthread exit函式退出,第二個正常退出。在主線程中,收集這兩個執行緒的退出資訊,並釋放資源。從例項可以看出,這兩個執行緒是併發執行的。thread.c include include void thre...
多執行緒程式設計(一) 執行緒建立和退出
一 引言 二 例項 以下例項中建立了2個執行緒,其中第乙個執行緒是在程式執行到中途時呼叫pthread exit函式退出,第二個正常退出。在主線程中,收集這兩個執行緒的退出資訊,並釋放資源。從例項可以看出,這兩個執行緒是併發執行的。cpp view plain copy thread.c inclu...
C 多執行緒(一) 執行緒管理
多執行緒是 此處省略一萬字,省略的文字詳細說明了什麼是多執行緒 其歷史及其發展 使用多執行緒的好處和缺點以及c c 對多執行緒的支援的歷史 c 標準庫自c 11標準以來開始支援多執行緒,多執行緒相關的類在thread標頭檔案中,所以使用請先必須 include 啟動乙個執行緒非常簡單,例程如下 in...