一、執行緒池都有哪些狀態?
執行緒池有5種狀態:Running、ShutDown、Stop、Tidying、Terminated。
執行緒池各個狀態切換框架圖:
(影片教學推薦:java影片)
#二、執行緒池中submit()和execute()方法有什麼差別?
接收的參數不一樣
submit有回傳值,而execute沒有
submit方便Exception處理
三、在java 程式中怎麼保證多執行緒的運行安全?
線程安全在三個方面體現:
原子性:提供互斥訪問,同一時刻只能有一個線程對資料進行操作,(atomic,synchronized);
可見性:一個執行緒對主記憶體的修改可以及時地被其他執行緒看到,(synchronized,volatile);
有順序:一個執行緒觀察其他執行緒中的指令執行順序,由於指令重新排序,此觀察結果一般雜亂無序,(happens-before原則)。
(相關教學推薦:java入門程式)
四、多執行緒鎖定的升級原理是什麼?
在Java中,鎖共有4種狀態,等級從低到高依序為:無狀態鎖,偏向鎖,輕量級鎖和重量級鎖狀態,這幾個狀態會隨著競爭狀況逐漸升級。鎖可以升級但不能降級。
鎖定升級的圖示流程:
五、什麼是死鎖?
死鎖是指兩個或兩個以上的進程在執行過程中,由於競爭資源或由於彼此通信而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的進程稱為死鎖進程。
推薦教學:java面試題
以上是2020全新Java面試題-多執行緒(三)的詳細內容。更多資訊請關注PHP中文網其他相關文章!