中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

java線程死鎖代碼示例

發布時間:2020-09-13 09:22:54 來源:腳本之家 閱讀:149 作者:rese-t 欄目:編程語言

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

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

文件名:DeadThreadByExtend.java

注:

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

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

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

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線程死鎖代碼示例的全部內容,希望對大家有所幫助。如有不足之處,歡迎留言指出。感謝朋友們對本站的支持。

向AI問一下細節

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

AI

丹凤县| 海晏县| 通河县| 错那县| 洛扎县| 靖边县| 潞城市| 朔州市| 武定县| 红安县| 阳曲县| 永寿县| 海宁市| 乌什县| 郸城县| 错那县| 灌南县| 加查县| 彩票| 昌邑市| 丰台区| 福建省| 镇康县| 阳曲县| 富阳市| 泸溪县| 会泽县| 广南县| 龙州县| 泗水县| 海盐县| 彰化县| 澄迈县| 河池市| 黑河市| 盈江县| 宿州市| 横山县| 新郑市| 元氏县| 修水县|