Java 多執行緒常見問題

2021-09-14 01:17:39 字數 430 閱讀 9978

多執行緒並不一定是要在多核處理器才支援的,就算是單核也是可以支援多執行緒的。

cpu 通過給每個執行緒分配一定的時間片,由於時間非常短通常是幾十毫秒,所以 cpu 可以不停的切換執行緒執行任務從而達到了多執行緒的效果。

上下文切換是非常耗效率的。

通常有以下解決方案:

死鎖的場景一般是:執行緒 a 和執行緒 b 都在互相等待對方釋放鎖,或者是其中某個執行緒在釋放鎖的時候出現異常如死迴圈之類的。這時就會導致系統不可用。

常用的解決方案如下:

如果是受限於資源的話可以採用集群來處理任務,不同的機器來處理不同的資料,就類似於開始提到的無鎖程式設計。

礦洞程式設計師.jpg

Java 多執行緒常見問題

上下文切換 多執行緒並不一定是要在多核處理器才支援的,就算是單核也是可以支援多執行緒的。cpu 通過給每個執行緒分配一定的時間片,由於時間非常短通常是幾十毫秒,所以 cpu 可以不停的切換執行緒執行任務從而達到了多執行緒的效果。上下文切換是非常耗效率的。通常有以下解決方案 採用無鎖程式設計,比如將資...

Java 多執行緒常見問題

多執行緒並不一定是要在多核處理器才支援的,就算是單核也是可以支援多執行緒的。cpu 通過給每個執行緒分配一定的時間片,由於時間非常短通常是幾十毫秒,所以 cpu 可以不停的切換執行緒執行任務從而達到了多執行緒的效果。上下文切換是非常耗效率的。通常有以下解決方案 死鎖的場景一般是 執行緒 a 和執行緒...

Java 面試常見問題

介面抽象類 區別成員變數 抽象類可以是變數也可以是常量,介面只能是常量 關鍵字 抽象類abstract 介面是inte ce 構造方法 介面沒有構造方法,抽象類有構造方法 成員方法 抽象類可以有非抽象方法,而介面不能有 介面可以多實現,而抽象類只能單繼承 介面可以同時繼承多個介面 相同點不能直接例項...