1. 程式人生 > >多執行緒學習總結

多執行緒學習總結

只有一條執行路基的程式是單執行緒程式

有多條則為多執行緒

 多程序意義:  增加cpu使用率,可以同一時間段內執行多個任務.  cpu某一個時間點只能做一件事情,只不過cpu在做程式間的高效切換

 

一個程序內多個任務,這個任務就是執行緒

執行緒是程式的執行單元,執行路徑,是程式使用CPU的最基本單位.

多執行緒意義:不是提高程式的速度,其實是提高程式的使用率.,有多個執行路徑的程序有更高的機率搶到CPU的執行權.

 

 

  並行和併發。

  前者是邏輯上同時發生,指在某一個時間內同時執行多個程式。

  後者是物理上同時發生,指在某一個時間點同時執行多個程式。

  那麼,我們能不能實現真正意義上的併發呢,是可以的,多個CPU就可以實現,不過你得知道如何排程和控制它們。

一個執行緒物件只能同時呼叫一次start(),

方法:

執行緒優先順序 1-10,僅僅表示機率,但是要在次數比較多的時候才有效果

執行緒控制有如下:

直接Thread.sleep(xx)呼叫,需要拋異常

join() 當前執行緒結束後其他執行緒才可以執行.

需要拋異常

Thread.yield()呼叫,沒有異常,執行完一次進行等待

必須在啟動前設定,設定後主執行緒一旦結束,守護執行緒就結束.

 

stop太暴力,直接將執行緒終止,

interrupt則會將執行緒的狀態終止,並拋異常.   如wait  sleep join

第二種多執行緒的方式, 是去實現Runnable介面,並重寫run(),建立執行緒的時候在構造方法中放入Runnable的實現物件,避免了單繼承的侷限性,將執行緒同程式的程式碼塊有效的分離,(尤其是有共享資料的時候)

執行緒具有延遲性和隨機性,所以可能有重複執行一個結果的情況,必須加同步鎖 synchronized或者lock鎖

同步程式碼塊的鎖物件時任意類的物件,同步方法的鎖物件時this,靜態的是class檔案