首頁 >Java >Java面試題 >2020全新Java面試題-多執行緒(三)

2020全新Java面試題-多執行緒(三)

王林
王林轉載
2020-05-14 17:56:302147瀏覽

2020全新Java面試題-多執行緒(三)

一、執行緒池都有哪些狀態?

執行緒池有5種狀態:Running、ShutDown、Stop、Tidying、Terminated。

執行緒池各個狀態切換框架圖:

2020全新Java面試題-多執行緒(三)

(影片教學推薦:java影片

#二、執行緒池中submit()和execute()方法有什麼差別?

接收的參數不一樣

submit有回傳值,而execute沒有

submit方便Exception處理

三、在java 程式中怎麼保證多執行緒的運行安全?

線程安全在三個方面體現:

原子性:提供互斥訪問,同一時刻只能有一個線程對資料進行操作,(atomic,synchronized);

可見性:一個執行緒對主記憶體的修改可以及時地被其他執行緒看到,(synchronized,volatile);

有順序:一個執行緒觀察其他執行緒中的指令執行順序,由於指令重新排序,此觀察結果一般雜亂無序,(happens-before原則)。

(相關教學推薦:java入門程式

四、多執行緒鎖定的升級原理是什麼?

在Java中,鎖共有4種狀態,等級從低到高依序為:無狀態鎖,偏向鎖,輕量級鎖和重量級鎖狀態,這幾個狀態會隨著競爭狀況逐漸升級。鎖可以升級但不能降級。

鎖定升級的圖示流程: 

2020全新Java面試題-多執行緒(三)

五、什麼是死鎖?

死鎖是指兩個或兩個以上的進程在執行過程中,由於競爭資源或由於彼此通信而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的進程稱為死鎖進程。

推薦教學:java面試題

#

以上是2020全新Java面試題-多執行緒(三)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除