91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java引發死鎖的四種情況分別是什么

發布時間:2021-05-12 10:20:57 來源:億速云 閱讀:161 作者:小新 欄目:編程語言

這篇文章主要介紹java引發死鎖的四種情況分別是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

1、四種情況

(1)交叉鎖導致程序死鎖:比如線程A持有R1的鎖等待R2的鎖,線程B持有R2的鎖等待R1的鎖

(2)內存不足:比如兩個線程T1和T2,T1已獲取10MB內存,T2獲取了15MB內存,T1和T2都需要獲取30MB內存才能工作,但是剩余可用的內存為10MB,這樣兩個線程都在等待彼此釋放內存資源

(3)一問一答式的數據交換:服務器開啟某個端口,等待客戶端訪問,客戶端發送請求后,服務器因某些原因錯過了客戶端請求,導致客戶端等待服務器回應,而服務器等待客戶端發送請求

(4)死循環引起的死鎖:比較常見,使用jstack等工具看不到死鎖,但是程序不工作,CPU占有率高,這種死鎖也叫系統假死,難以排查和重現

2、實例

public class Main {
    private final Object MUTEX_READ = new Object();
    private final Object MUTEX_WRITE = new Object();
 
    public void read(){
        synchronized (MUTEX_READ){
            synchronized (MUTEX_WRITE){
            }
        }
    }
 
    public void write(){
        synchronized (MUTEX_WRITE){
            synchronized (MUTEX_READ){
            }
        }
    }
 
    public static void main(String[] args) throws InterruptedException {
        Main m = new Main();
        new Thread(()->{
            while (true){
                m.read();
            }
        }).start();
        new Thread(()->{
            while (true){
                m.write();
            }
        }).start();
    }
}

Java是什么

Java是一門面向對象編程語言,可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序。

以上是“java引發死鎖的四種情況分別是什么”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邵阳市| 凉城县| 嘉义市| 凤城市| 龙口市| 额尔古纳市| 安西县| 宁强县| 乐陵市| 纳雍县| 车险| 嘉荫县| 文昌市| 孟连| 托里县| 饶河县| 东宁县| 海林市| 泸溪县| 柘城县| 汶川县| 湘潭县| 宁都县| 上栗县| 寿阳县| 苗栗市| 万载县| 塘沽区| 蓬安县| 呼玛县| 河曲县| 贵阳市| 敖汉旗| 永兴县| 汉沽区| 钦州市| 科尔| 阳东县| 秀山| 缙云县| 常德市|