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

java線程死鎖代碼示例

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

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

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

文件名:DeadThreadByExtend.java

注:

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

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

3、synchronized 塊并不會強(qiáng)制塊內(nèi)變量的單線程訪問。僅僅意味著在執(zhí)行塊內(nèi)語句時(shí)鎖住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安裝與配置實(shí)踐超詳細(xì)指南

    JDK8安裝與配置實(shí)踐超詳細(xì)指南

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

    maven項(xiàng)目切換JDK踩坑指南分享

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

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

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

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

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

    探討Java中的深淺拷貝問題

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

    解決IDEA下載依賴包源碼報(bào)錯(cuò)Sources not found for:org.spri

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

    使用JAVA命令運(yùn)行JAR包以及日志輸出詳解

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

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

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

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

    這篇文章主要介紹了Java 實(shí)現(xiàn)LZ78壓縮算法的示例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    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ū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09

最新評論

启东市| 噶尔县| 临邑县| 诸城市| 周至县| 穆棱市| 马尔康县| 邛崃市| 三江| 绥滨县| 大宁县| 朝阳市| 河曲县| 清镇市| 上栗县| 介休市| 贵南县| 稻城县| 烟台市| 化德县| 大渡口区| 栖霞市| 托克托县| 奉节县| 开鲁县| 襄樊市| 喀什市| 韶山市| 大关县| 台前县| 林周县| 文成县| 专栏| 穆棱市| 蓝山县| 贵南县| 灵寿县| 诸城市| 临清市| 新乡市| 临澧县|