多執行緒中的狀態轉換以及常見的面試題

2022-08-30 10:12:10 字數 1350 閱讀 7209

在多執行緒部分一些常見的面試題:

1 1:多執行緒有幾種實現方案,分別是哪幾種?

2兩種。34

繼承thread類

5實現runnable介面67

擴充套件一種:實現callable介面。這個得和執行緒池結合。

89 2:同步有幾種方式,分別是什麼?

10兩種。

1112

同步**塊

13同步方法

1415 3:啟動乙個執行緒是run()還是start()?它們的區別?

16start();

1718

run():封裝了被執行緒執行的**,直接呼叫僅僅是普通方法的呼叫

19start():啟動執行緒,並由jvm自動呼叫run()方法

2021 4:sleep()和wait()方法的區別 這個是重點

22sleep():必須指時間;不釋放鎖。

23wait():可以不指定時間,也可以指定時間;釋放鎖。

2425 5:為什麼wait(),notify(),notifyall()等方法都定義在object類中

26因為這些方法的呼叫是依賴於鎖物件的,而同步**塊的鎖物件是任意鎖。

27而object**任意的物件,所以,定義在這裡面。

2829 6:執行緒的生命週期圖

30 新建 -- 就緒 -- 執行 --死亡

31 新建 -- 就緒 -- 執行 -- 阻塞 -- 就緒 -- 執行 --死亡

32 建議:畫**釋。

1:多執行緒有幾種實現方案,分別是哪幾種?兩種。繼承thread類實現runnable介面擴充套件一種:實現callable介面。這個得和執行緒池結合。

2:同步有幾種方式,分別是什麼?兩種。同步**塊同步方法

3:啟動乙個執行緒是run()還是start()?它們的區別?start();run():封裝了被執行緒執行的**,直接呼叫僅僅是普通方法的呼叫start():啟動執行緒,並由jvm自動呼叫run()方法

4:sleep()和wait()方法的區別 這個是重點sleep():必須指時間;不釋放鎖。wait():可以不指定時間,也可以指定時間;釋放鎖。

5:為什麼wait(),notify(),notifyall()等方法都定義在object類中因為這些方法的呼叫是依賴於鎖物件的,而同步**塊的鎖物件是任意鎖。而object**任意的物件,所以,定義在這裡面。

6:執行緒的生命週期圖新建 -- 就緒 -- 執行 -- 死亡新建 -- 就緒 -- 執行 -- 阻塞 -- 就緒 -- 執行 -- 死亡建議:畫**釋。

執行緒的狀態轉換以及基本操作

public class createthreaddemo thread.start 2.實現runable介面 thread thread1 newthread new runnable thread1.start 3.實現callable介面 executorservice service ex...

執行緒的狀態以及狀態之間的相互轉換

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

多執行緒的狀態

借用老師講課內容 新生new 例項化,但還未做任何操作 就緒ready 乙個執行緒已經開啟,已經開始爭搶cpu時間片。執行run 乙個執行緒搶到了cpu時間片,開始執行這個執行緒中的邏輯 阻塞interrupt 乙個執行緒在執行過程中,收到某些操作的影響,放棄了已經獲取到的cpu時間片,並且不再參與...