多執行緒的狀態

2021-10-02 01:50:10 字數 867 閱讀 4715

借用老師講課內容:

新生new:

例項化,但還未做任何操作

就緒ready:

乙個執行緒已經開啟,已經開始爭搶cpu時間片。

執行run:

乙個執行緒搶到了cpu時間片,開始執行這個執行緒中的邏輯

阻塞interrupt:

乙個執行緒在執行過程中,收到某些操作的影響,放棄了已經獲取到的cpu時間片,並且不再參與cpu時間片的爭搶,此時執行緒處於掛起狀態。

死亡dead:

乙個執行緒物件需要被銷毀。

如何解決多執行緒臨界資源的問題?

多執行緒會有同時搶到cpu時間片的情況,這樣同時做乙個操作,會導致資料錯亂。怎麼解決呢,可以通過同步**塊,同步方法等方式解決。

同步**段,在需要的**外加synchronized(鎖)即可。

同步方法,方法用synchronized修飾

靜態方法,同步鎖就是類鎖,當前類.class

非靜態方法,同步鎖是this

同步鎖:用reentranlock例項化鎖

reentranlock lock = new reentranlock();

lock.lock();

//**塊

lock.unlock();

死鎖的情況?如何避免?

死鎖是多個執行緒彼此持有對方所需要的鎖標記,而不去釋放自己的鎖所造成的。怎麼避免呢?盡量不要讓執行緒持有乙個鎖的同時還去訪問另乙個鎖。

Java多執行緒 執行緒狀態

from 一.執行緒狀態型別 1.新建狀態 new 新建立了乙個執行緒物件。2.就緒狀態 runnable 執行緒物件建立後,其他執行緒呼叫了該物件的start 方法。該狀態的執行緒位於可執行執行緒池中,變得可執行,等待獲取cpu的使用權。3.執行狀態 running 就緒狀態的執行緒獲取了cpu,...

Java多執行緒 執行緒狀態

一.執行緒狀態型別 1.新建狀態 new 新建立了乙個執行緒物件。2.就緒狀態 runnable 執行緒物件建立後,其他執行緒呼叫了該物件的start 方法。該狀態的執行緒位於可執行執行緒池中,變得可執行,等待獲取cpu的使用權。3.執行狀態 running 就緒狀態的執行緒獲取了cpu,執行程式 ...

Java多執行緒的狀態

執行圖如下 1,建立狀態 在程式中用構造方法建立了乙個執行緒物件後,新的執行緒物件便處於新建狀態,此時,它已經有了相應的 記憶體空間和其他資源,但還處於不可執行狀態。新建乙個執行緒物件可採用thread 類的構造方法來實現,例 如,thread thread new thread 2,就緒狀態 新建...