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

溫馨提示×

java中引發死鎖的情況有哪些

沐橙
150
2021-05-13 17:36:31
欄目: 編程語言

java中引發死鎖的情況有4種,分別是:1、交叉鎖引發程序死鎖;2、內存不足引發程序死鎖;3、一問一答式的數據交換引發死鎖;4、死循環引發的死鎖。

java中引發死鎖的情況有哪些

具體內容如下:

java引發死鎖的4種情況

1、交叉鎖引發程序死鎖:比如線程A持有R1的鎖等待R2的鎖,線程B持有R2的鎖等待R1的鎖。

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

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

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

死鎖相關實例

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();

    }

}


0
澜沧| 万年县| 天水市| 滁州市| 兴和县| 景洪市| 六枝特区| 龙海市| 九龙城区| 崇明县| 焉耆| 建始县| 虹口区| 梧州市| 泽普县| 连江县| 老河口市| 潼南县| 比如县| 中阳县| 抚顺市| 珲春市| 晋江市| 淄博市| 辽宁省| 和硕县| 阳东县| 安图县| 美姑县| 南安市| 旺苍县| 旌德县| 沅陵县| 海林市| 东兰县| 射阳县| 察隅县| 古田县| 灵台县| 连山| 乌审旗|