激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品少妇v888av| 把娇妻调教成暴露狂 | 欧美一区二区三区中文字幕 | 9999精品 | 草逼一区| 久久精品国产一区二区 | 免费观看黄色一级视频 | 有一婷婷色| 欧美乱码精品一区 | 在线播放免费人成毛片乱码 | 精品国产一区三区 | 国产精品剧情一区二区在线观看 | 成人激情在线观看 | 视频一区二区三区免费观看 | 成人在线免费观看小视频 | 精品一区二区在线视频 | 欧美一区二区三区四区五区动图 | 毛片在线免费播放 | 狠狠99| 精品在线免费播放 | 精品一区二区在线播放 | 好吊色欧美一区二区三区四区 | 国产污污视频 | 成人在线免费观看视频 | 国产日韩a | 羞羞电影在线观看 | 91短视频版高清在线观看免费 | www.国产.com| 日韩a毛片免费观看 | 午夜精品成人 | 九九热在线精品视频 | 精精国产xxxx视频在线野外 | 叶子楣成人爽a毛片免费啪啪 | 亚洲第一色婷婷 | 男男羞羞视频网站国产 | 中文字幕11| 国产精品成人亚洲一区二区 | 精品成人在线观看 | 九一国产精品 | 国产亚洲精品成人 | 精品成人av一区二区三区 |