一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java線程死鎖代碼示例

java線程死鎖代碼示例

2021-02-20 11:40rese-t Java教程

這篇文章主要介紹了java線程死鎖代碼示例,分享了一個簡單線程死鎖的例子,需要的朋友可以參考下。

死鎖是操作系統層面的一個錯誤,是進程死鎖的簡稱,最早在 1965 年由 Dijkstra 在研究銀行家算法時提出的,它是計算機操作系統乃至整個并發程序設計領域最難處理的問題之一。

事實上,計算機世界有很多事情需要多線程方式去解決,因為這樣才能最大程度上利用資源,才能體現出計算的高效。但是,實際上來說,計算機系統中有很多一次只能由一個進程使用的資源的情況,例如打印機,同時只能有一個進程控制它。在多通道程序設計環境中,若干進程往往要共享這類資源,而且一個進程所需要的資源還很有可能不止一個。因此,就會出現若干進程競爭有限資源,又推進順序不當,從而構成無限期循環等待的局面。我們稱這種狀態為死鎖。簡單一點描述,死鎖是指多個進程循環等待它方占有的資源而無限期地僵持下去的局面。很顯然,如果沒有外力的作用,那么死鎖涉及到的各個進程都將永遠處于封鎖狀態。

文件名:DeadThreadByExtend.java

注:

1、起線程的時候用的是start方法,run方法也可以調用,但是僅僅相當于普通調用,在當前線程內執行。

2、synchronized 不能直接修飾變量。

3、synchronized 塊并不會強制塊內變量的單線程訪問。僅僅意味著在執行塊內語句時鎖住synchronized (args)的參數,直到執行結束才釋放。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package com.ycf.study.thread;
class Sources{
    int a;
    public void setA(int x) {
        synchronized (this) {
            this.a = x;
            try {
                Thread.sleep(2000);
            }
            catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
public class DeadThreadByExtend {
    public static void main(String[] args) {
        Sources s1 = new Sources();
        Sources s2 = new Sources();
        class MyThread1 extends java.lang.Thread {
            @Override
                  public void run() {
                System.out.println("線程1開始");
                synchronized (s1) {
                    System.out.println("線程1申請修改s1");
                    s1.setA(20);
                    System.out.println("線程1修改完成");
                    System.out.println("線程1申請修改s2");
                    s2.setA(10);
                    System.out.println("線程1修改s2完成");
                }
                System.out.println("線程1退出并釋放鎖++++++++++");
            }
        }
        class MyThread2 extends java.lang.Thread {
            @Override
                  public void run() {
                System.out.println("線程2開始");
                synchronized (s2) {
                    System.out.println("線程2申請修改s2");
                    s2.setA(20);
                    System.out.println("線程2修改s2完成");
                    System.out.println("線程2申請修改s1");
                    s1.setA(10);
                    System.out.println("線程2修改s1完成");
                }
                System.out.println("線程2退出并釋放鎖++++++++++");
            }
        }
        MyThread1 mt1 = new MyThread1();
        MyThread2 mt2 = new MyThread2();
        mt1.start();
        mt2.start();
    }
}

總結

以上就是本文關于java線程死鎖代碼示例的全部內容,希望對大家有所幫助。如有不足之處,歡迎留言指出。感謝朋友們對本站的支持。

原文鏈接:http://www.cnblogs.com/rese-t/p/7857812.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产夜趣福利第一视频 | 亚洲国产视频网站 | 色综合天天综合网看在线影院 | 粉嫩高中生第一次不戴套 | 俄罗斯三级完整版在线观看 | 国产精品俺来也在线观看了 | 日本孕妇与黑人xxxxxx | 6969精品视频在线观看 | 欧美sq| 国产午夜视频在线观看网站 | 精品国产免费久久久久久婷婷 | 鬼吹灯天星术在线高清观看 | 国产视频自拍一区 | 99精品国产自在现线观看 | 韩国禁片在线观看久 | 成人精品视频一区二区在线 | 日韩a无吗一区二区三区 | 日韩视频在线精品视频免费观看 | 亚洲视频男人的天堂 | 亚洲黄色网页 | 国产精品玖玖玖影院 | 成年人视频在线免费观看 | 国产自精品 | 女仆掀起蕾丝裙被打屁股作文 | 美女视频91 | 欧美贵妇videos办公室360 | 国产精品久久久久毛片真精品 | 国产精品国产国产aⅴ | 放荡的女老板bd中文字幕 | 青柠影院在线观看免费完整版1 | 天天操夜夜操狠狠操 | 国自产精品手机在线视频 | 欧美久久影院 | 午夜深情在线观看免费 | 沉沦艳妇杨幂肉体小说 | 欧美视频在线播放观看免费福利资源 | 三级网站午夜三级 | 久久一本岛在免费线观看2020 | 国产va欧美va在线观看 | 亚洲精品福利一区二区在线观看 | 色综合色狠狠天天综合色 |