多執行緒學習筆記(1)
阿新 • • 發佈:2019-02-09
1.執行緒的建立
兩種方式:繼承Thread類,實現Runnable介面
繼承Thread類:重寫run方法
實現Runnable介面:實現run方法,同時需在宣告時飲用Thread類構造方法來成為真正的執行緒物件。
實現Runnable介面的好處是:若所定義的類已經是其他類的子類,則不能通過繼承Thread類的方法實現多執行緒,這時實現介面的方式可以解決該問題
2.執行緒的啟動
myThread.start()
3.執行緒終止
採用 myThread.isAlive() 判定執行緒是否終止
4.執行緒的暫停
兩種方式:myThread.sleep(1000),myThread.join(1000)
sleep:執行緒睡眠一段時間後立即恢復執行
join:使當前執行的執行緒停下來等待,直至引用join方法的執行緒終止
5.執行緒的鎖
Java通過synchronized關鍵字來維護資料一致性,其機制是給共享資源上鎖,java中每個物件都有鎖,只有拿到鎖的執行緒才能對共享資源進行訪問
加鎖方式:給方法加鎖,給共享資源加鎖
-給方法加鎖:鎖定整個物件
public synchronized void put(){}
-給共享資源加鎖
synchronized(o1){對共享資源的操作}
6.執行緒的等待和喚醒(在synchronized方法或塊中)
等待:wait()
喚醒:喚醒單個執行緒notify(),喚醒所有執行緒notifyAll()-易造成競爭