一.自定義來繼承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 記憶體被釋放了,並不表示指標會消亡或者成...