Java併發程式設計---java規範與模式下的併發程式設計1.1

hurricane_li發表於2018-04-29

concurrent programming in java design principles and patterns 學習記錄。

Using Concurrency Constructs:

使用synchronized的一般規則:

  •     更新物件自身的屬性時,總是加鎖。
  •     訪問可能被改變的物件屬性時,總是加鎖。
  •     當呼叫其他物件的方法時,從不加鎖。

使執行緒結束的方法有很多種:

  • 最簡單的方法時讓run方法正常執行結束.
  • 但是對於有無盡迴圈邏輯的執行緒來說,最好的選擇是使用Thread.interreupt,這樣執行緒即可從Object.wait(),Thread.join()和Thread.sleep()中退出,呼叫者可以捕獲中斷異常,進行合適的處理。

新開啟的執行緒不持有開啟者執行緒所持有的任何鎖。

在自己的執行緒中不要讓自己join,如此自己會等待自己執行完再繼續執行,這樣程式將無法退出。

預設每個執行緒的優先順序與開啟它的執行緒相同,主執行緒預設的優先順序為5(優先順序1-10).執行緒可以在自己的執行緒執行中設定自己的優先順序。設定的優先順序可以影響到本程式與其他程式在同一臺計算機上的排程。

主執行緒被繼承的優先順序只能是5(主執行緒可以設定自己的優先順序為其他值,但是主執行緒建立的其他執行緒預設繼承的值是5,可以顯示設定開啟的執行緒的優先順序,其他執行緒設定自己的優先順序可以被其開啟的執行緒繼承)

Thread類還支援的控制方法有:suspend、resume、stop和destroy。suspend、resume和stop被棄用了,stop在發行版java中沒被實現,可能永遠也不會實現。suspend和resume的效果可以用waiting和notification來實現。

suspend、resume、stop與destroy已經全部棄用了,但是destroy也是實現了的。

Thread的yield方法建議先執行其他的執行緒,yield方法的作用取決於虛擬機器的解釋,因此yield的作用並不能獲得保證。


相關文章