最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java線程死鎖代碼示例

 更新時間:2017年11月24日 08:38:17   作者:rese-t  
這篇文章主要介紹了java線程死鎖代碼示例,分享了一個簡單線程死鎖的例子,需要的朋友可以參考下。

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

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

文件名:DeadThreadByExtend.java

注:

1、起線程的時候用的是start方法,run方法也可以調(diào)用,但是僅僅相當于普通調(diào)用,在當前線程內(nèi)執(zhí)行。

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

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

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

總結(jié)

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

相關(guān)文章

  • JDK8安裝與配置實踐超詳細指南

    JDK8安裝與配置實踐超詳細指南

    本文詳細介紹了在Windows?64位系統(tǒng)上安裝和配置JDK8的步驟,包括JDK8下載、環(huán)境變量設(shè)置及安裝驗證,同時提供了JDK8新特性如Lambda表達式、StreamAPI等的概覽,旨在幫助Java開發(fā)者有效利用JDK8新特性進行開發(fā),需要的朋友可以參考下
    2024-10-10
  • maven項目切換JDK踩坑指南分享

    maven項目切換JDK踩坑指南分享

    文章介紹了如何在Windows系統(tǒng)中配置多版本JDK環(huán)境,并解決環(huán)境變量配置失效的問題,同時,還提供了在IntelliJ?IDEA中配置不同項目JDK版本的方法
    2024-11-11
  • JAVA基于Arrays.sort()實現(xiàn)數(shù)組升序和降序

    JAVA基于Arrays.sort()實現(xiàn)數(shù)組升序和降序

    這篇文章主要介紹了JAVA基于Arrays.sort()實現(xiàn)數(shù)組升序和降序,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • IDEA類和方法注釋模板設(shè)置全過程

    IDEA類和方法注釋模板設(shè)置全過程

    文章介紹了如何在IDEA中使用自定義的注釋模板,包括類注釋模板和方法注釋模板的設(shè)置方法,類注釋模板可以通過編輯File?and?Code?Templates來實現(xiàn),而方法注釋模板可以通過LiveTemplates功能創(chuàng)建
    2026-01-01
  • 探討Java中的深淺拷貝問題

    探討Java中的深淺拷貝問題

    這個概念估計懂C++的人不會陌生,但是很多朋友并不了解,概括起來將淺拷貝就是指兩個對象公用一個值,一個的改變了另一個也會隨之改變,深拷貝則是兩個對象值相等,但是相互獨立互不影響。下面我們將關(guān)于java的淺拷貝和深拷貝做一個詳細講解
    2021-06-06
  • 解決IDEA下載依賴包源碼報錯Sources not found for:org.springframework.cloud:XXX問題

    解決IDEA下載依賴包源碼報錯Sources not found for:org.spri

    IDEA查看源碼時如遇無法下載源代碼報錯,可通過Maven命令或配置IDEA自動下載源碼來解決,保證依賴包能自動獲取源碼,提升開發(fā)體驗
    2025-10-10
  • 使用JAVA命令運行JAR包以及日志輸出詳解

    使用JAVA命令運行JAR包以及日志輸出詳解

    這篇文章主要給大家介紹了關(guān)于使用JAVA命令運行JAR包以及日志輸出的相關(guān)資料,文中通過代碼示例介紹的非常詳細,對大家學習或者使用java具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • Java8新特性O(shè)ptional類及新時間日期API示例詳解

    Java8新特性O(shè)ptional類及新時間日期API示例詳解

    這篇文章主要為大家介紹了Java8新特性O(shè)ptional類及新時間日期API示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Java 實現(xiàn)LZ78壓縮算法的示例代碼

    Java 實現(xiàn)LZ78壓縮算法的示例代碼

    這篇文章主要介紹了Java 實現(xiàn)LZ78壓縮算法的示例代碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-05-05
  • 淺談java中Math.random()與java.util.random()的區(qū)別

    淺談java中Math.random()與java.util.random()的區(qū)別

    下面小編就為大家?guī)硪黄獪\談java中Math.random()與java.util.random()的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09

最新評論

聊城市| 襄樊市| 龙岩市| 志丹县| 乐清市| 恩施市| 乐昌市| 武宣县| 楚雄市| 宜良县| 甘德县| 余庆县| 临湘市| 江西省| 凌海市| 和政县| 陆川县| 武宁县| 固阳县| 马龙县| 新郑市| 寿光市| 常熟市| 玉门市| 大渡口区| 商城县| 城市| 龙川县| 秦皇岛市| 双桥区| 达拉特旗| 岚皋县| 宜黄县| 南木林县| 阳山县| 灵寿县| 德兴市| 库车县| 五大连池市| 二连浩特市| 罗定市|