執行緒總結之一二三四五

大都督17918發表於2020-12-05

1、一個概念:什麼是執行緒?

執行緒是作業系統能夠進行運算排程的最小單位。
它被包含在程式中間,是程式中的實際運作單位。
執行緒是程式的子集,一個程式有很多執行緒,每條執行緒並行執行不同的任務。不同的程式使用不同的記憶體空間,而所有的執行緒共享一片相同的記憶體空間。每個執行緒都擁有單獨的棧記憶體來儲存本地資料,

2、兩個模型:執行緒排程模型

分時排程模型和搶佔式排程模型。
對於單核CPU,多個執行緒要使用時,不能只給一個執行緒處理,所以作業系統會把CPU使用時間劃分成時間片分給執行緒輪流使用。就是分時排程模型。但有些執行緒權重大優先順序高,可以優先獲取到CPU時間片。屬於搶佔式排程模型。java採用搶佔排程模型。

3、三個要素:執行緒併發程式設計三要素

原子性:一個或多個操作是一個原子一樣不可分割,要麼成功要麼失敗。
可見性:一個執行緒對共享資料的改變,其他執行緒立刻可見。
有序性:程式執行的順序按照程式碼順序執行(處理器可能對指令重排,但是在單執行緒下不管如何排一定是;執行結果一樣才可以重排)
出現執行緒安全問題的三個原因:
a、執行緒切換帶來的原子性問題
b、快取導致的可見性問題
c、編譯優化帶來的有序性問題

4、四種建立方式:執行緒建立方式

1、通過new 一個繼承了Thread的子類物件的方式建立。
2、通過實現了Runnable介面的子類物件,傳入Thread的建構函式來建立。
3、通過實現了Callable介面的類建立物件,然後依據該物件建立FutureTask物件,再用FutureTask物件傳遞給Thread類建構函式來建立。
4、使用執行緒池來建立

5、五種生命形態:執行緒生命週期的五種狀態

1、新建狀態
2、可執行狀態
3、執行狀態
4、阻塞狀態
5、死亡狀態

相關文章