亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

甘肃省| 黔江区| 桂东县| 西宁市| 南乐县| 新巴尔虎左旗| 宁蒗| 遂宁市| 牙克石市| 于田县| 雅江县| 宿松县| 张家口市| 全州县| 石泉县| 上思县| 兴义市| 邢台县| 铜陵市| 抚州市| 富平县| 白水县| 裕民县| 基隆市| 银川市| 绥德县| 哈巴河县| 米泉市| 贡觉县| 施甸县| 利川市| 东乡县| 洪洞县| 呼伦贝尔市| 绥芬河市| 河北区| 雷山县| 漳浦县| 丽江市| 阿鲁科尔沁旗| 博客|