Thread一些基本概念

2022-09-13 14:03:12 字數 1322 閱讀 9815

1、實現執行緒的三種方式 (extends thread , implements runnable , implements callable new futuretask(callable) new thread(futuretask))

2、執行緒讓步yield(讓執行緒由執行狀態變為就緒狀態,不會釋放鎖)

3、執行緒休眠sleep(讓執行緒由執行狀態到阻塞狀態,當休眠時間到了以後由阻塞狀態變為就緒狀態等待cpu呼叫,不會釋放鎖)

4、join 阻塞當前執行緒, 待加入的執行緒執行完後再執行

main執行緒 執行如下

thread a = new thread();

a.start();

a.join();

system.out...("主線程執行完畢");

流程分析如下:主線程啟動a執行緒, a執行緒非同步執行, 主線程接著往下走, 將a執行緒join後, 主線程進入阻塞狀態, 等待a執行緒執行完畢後, 主線程才接著執行。

注:(主線程阻塞時候,並不會釋放鎖,如果主線程獲得鎖,之後讓子執行緒先執行,此時子執行緒也需要獲得鎖的話,就會造成死鎖)。

5、執行緒優先順序 1~10 預設為5 , 越大優先級別越高。

6、執行緒守護setdaemon(true); 當執行緒設定它的時候說明該執行緒就是守護執行緒, 當主線程執行完畢後, 守護執行緒自動中斷。 它的生命週期伴隨著主線程。

7、interrupt 執行緒的終止

8、wait 和notify notifyall 執行緒的等待和喚醒。

執行wait時候執行緒釋放鎖立即阻塞 ,執行notify的時候執行緒釋放鎖, 但是不會立即阻塞而是執行完當前函式。(可用作生產和消費)

9、髒讀概念

業務整體時,保證整塊業務的原子性。意思就是說相關業務整體需要使用完整的鎖。

例如 乙個物件 有名字 和 年齡 兩個屬性

當我們設定的時候,需要給名字和屬性都設上值,此時才是一塊完整的業務。如果

只給其中的乙個設定了,此時另乙個執行緒就讀了,那麼結果肯定是2個屬性中乙個屬性有值, 乙個屬性沒值, 此時就屬於髒讀問題。 不完整性。

10、synchronized 鎖

鎖物件、鎖類、鎖**塊。

父類的某個函式被synchronized 修飾的話, 子類重寫該方法的話, 如果子類不再加synchronized的話, 子類不具有鎖 , 如果子類不重寫該方法的話,那麼子類繼承父類的時候,也繼承了synchronized鎖。

11、volatile 此關鍵字儲存執行緒間的可見性。

當兩個執行緒呼叫公有的成員變數的時候, jdk1.5以後做了優化, 他會把成員變數複製乙個副本到執行緒棧中, 執行的時候,直接呼叫的是執行緒棧中的變數。

volatile 不能保證原子性。

C 一些基本概念

建構函式的作用是對物件本身做初始化工作,也就是給使用者提供初始化類中成員變數的一種方式。析構函式是釋放物件執行期間所申請的資源。函式的過載,過載構成的條件 函式的引數型別不同 引數個數不同,才能構成函式的過載 在乙個類中 注意,只有函式的返回型別不同是不能構成函式的過載。在函式過載時,要注意函式帶有...

linux OS一些基本概念

1.什麼是os?好簡單好x的問題,可是如果真的要自己用稍微官方稍微正規的語言或文本來回答,我真的能回答清楚嗎?好吧,我先來用自己的語言來回答。再去找點官方的定義。我自己的回答 os就是乙個可以管理並且相對合理分配計算機資源的軟體。官方回答 作業系統 英語 operating system,簡稱os ...

elasticsearch的一些基本概念

需要我們注意的是,這些概念理解只是解釋其含義,不推薦強制翻譯成中文。index 這是es儲存資料的地方,類似於關聯式資料庫的database。document type 嗯,類似關聯式資料庫的表,主要功能是將完全不同schema 這個概念以後會講到,不急 的資料分開,乙個index裡面可以有若干個d...