多執行緒的一些知識點

2021-09-24 20:20:25 字數 1005 閱讀 4200

一.自定義來繼承thread執行緒類

步驟:1.自定義類繼承thread類

2.重寫裡面的run()方法

3.建立自定義類物件

4.啟動執行緒strat()

**:public class mythread extends thread

public static void main(string args )

二.實現runable介面

步驟:1.自定義類繼承runable介面

2.重寫run()方法

3.建立thread類吧自定義類當做引數傳入進去

4.啟動start()方法

**:public class mythread implements runable

}public static void main(string args ){

mythread  mt=new mythread();

new thread(mt).start();

new thread(mt).start();

wait():使乙個執行緒處於等待狀態,並且釋放所持有的物件的lock。

sleep():使乙個正在執行的執行緒處於睡眠狀態,是乙個靜態方法,呼叫此方法要捕捉interruptedexception異常。

notify():喚醒乙個處於等待狀態的執行緒,注意的是在呼叫此方法的時候,並不能確切的喚醒某乙個等待狀態的執行緒,而是由jvm確定喚醒哪個執行緒,而且不是按優先順序。

allnotity():喚醒所有處入等待狀態的執行緒,注意並不是給所有喚醒執行緒乙個物件的鎖,而是讓它們競爭。

sleep是執行緒類(thread)的方法,導致此執行緒暫停執行指定時間,把執行機會給其他執行緒,但是監控狀態依然保持,到時後會自動恢復。呼叫sleep不會釋放物件鎖。

wait是object類的方法,對此物件呼叫wait方法導致本執行緒放棄物件鎖,進入等待此物件的等待鎖定池,只有針對此物件發出notify方法(或notifyall)後本執行緒才進入物件鎖定池準備獲得物件鎖進入執行狀態。

多執行緒的一些需要注意的知識點

一.鎖的劃分 從機制來說,鎖有6種。1.自旋鎖 是指當乙個執行緒在獲取鎖的時候,如果鎖已經被其他執行緒獲取,那麼該執行緒將迴圈等待,然後不斷的判斷鎖是否能夠被成功獲取,直到獲取鎖才會退出迴圈。2.樂觀鎖 假定沒有衝突,在修改資料時候如果發現資料和之前獲取的不一樣,則讀取最新資料,修改後重試。3.悲觀...

一些知識點

字串拼接 1.a join b a為元素之間的分隔符,b為待分割的序列 可用於輸出時的資料處理,元素間有空格,末尾沒有 2 s s s str1,str2,str3 前半部分為字串,後半部分為索引。用於引入,s是物件 3.format str1,str2,str3 與f 括號裡為已有變數 關於for...

一些知識點

1.vector是在堆上還是棧上?在堆上.2.我們發現指標有一些 似是而非 的特徵 1 指標消亡了,並不表示它所指的記憶體會被自動釋放。比如函式中的指標是區域性變數,如果它指向了堆上,而自己出了函式後消亡了,但它所指向的記憶體還是存在的,導致了記憶體洩漏.2 記憶體被釋放了,並不表示指標會消亡或者成...