日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java并发编程(9):死锁(含代码)

發布時間:2025/3/21 java 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java并发编程(9):死锁(含代码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當線程需要同時持有多個鎖時,有可能產生死鎖。考慮如下情形:

線程A當前持有互斥所鎖lock1,線程B當前持有互斥鎖lock2。接下來,當線程A仍然持有lock1時,它試圖獲取lock2,因為線程B正持有lock2,因此線程A會阻塞等待線程B對lock2的釋放。如果此時線程B在持有lock2的時候,也在試圖獲取lock1,因為線程A正持有lock1,因此線程B會阻塞等待A對lock1的釋放。二者都在等待對方所持有鎖的釋放,而二者卻又都沒釋放自己所持有的鎖,這時二者便會一直阻塞下去。這種情形稱為死鎖。

下面給出一個兩個線程間產生死鎖的示例,如下:

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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 public class Deadlock extends Object { ????private String objID; ????public Deadlock(String id) { ????????objID = id; ????} ????public synchronized void checkOther(Deadlock other) { ????????print("entering checkOther()"); ????????try { Thread.sleep(2000); } ????????catch ( InterruptedException x ) { } ????????print("in checkOther() - about to " + "invoke 'other.action()'"); ????????//調用other對象的action方法,由于該方法是同步方法,因此會試圖獲取other對象的對象鎖 ????????other.action(); ????????print("leaving checkOther()"); ????} ????public synchronized void action() { ????????print("entering action()"); ????????try { Thread.sleep(500); } ????????catch ( InterruptedException x ) { } ????????print("leaving action()"); ????} ????public void print(String msg) { ????????threadPrint("objID=" + objID + " - " + msg); ????} ????public static void threadPrint(String msg) { ????????String threadName = Thread.currentThread().getName(); ????????System.out.println(threadName + ": " + msg); ????} ????public static void main(String[] args) { ????????final Deadlock obj1 = new Deadlock("obj1"); ????????final Deadlock obj2 = new Deadlock("obj2"); ????????Runnable runA = new Runnable() { ????????????????public void run() { ????????????????????obj1.checkOther(obj2); ????????????????} ????????????}; ????????Thread threadA = new Thread(runA, "threadA"); ????????threadA.start(); ????????try { Thread.sleep(200); } ????????catch ( InterruptedException x ) { } ????????Runnable runB = new Runnable() { ????????????????public void run() { ????????????????????obj2.checkOther(obj1); ????????????????} ????????????}; ????????Thread threadB = new Thread(runB, "threadB"); ????????threadB.start(); ????????try { Thread.sleep(5000); } ????????catch ( InterruptedException x ) { } ????????threadPrint("finished sleeping"); ????????threadPrint("about to interrupt() threadA"); ????????threadA.interrupt(); ????????try { Thread.sleep(1000); } ????????catch ( InterruptedException x ) { } ????????threadPrint("about to interrupt() threadB"); ????????threadB.interrupt(); ????????try { Thread.sleep(1000); } ????????catch ( InterruptedException x ) { } ????????threadPrint("did that break the deadlock?"); ????} }

運行結果如下:

從結果中可以看出,在執行到other.action()時,由于兩個線程都在試圖獲取對方的鎖,但對方都沒有釋放自己的鎖,因而便產生了死鎖,在主線程中試圖中斷兩個線程,但都無果。

大部分代碼并不容易產生死鎖,死鎖可能在代碼中隱藏相當長的時間,等待不常見的條件地發生,但即使是很小的概率,一旦發生,便可能造成毀滅性的破壞。避免死鎖是一件困難的事,遵循以下原則有助于規避死鎖:

1、只在必要的最短時間內持有鎖,考慮使用同步語句塊代替整個同步方法;

2、盡量編寫不在同一時刻需要持有多個鎖的代碼,如果不可避免,則確保線程持有第二個鎖的時間盡量短暫;

3、創建和使用一個大鎖來代替若干小鎖,并把這個鎖用于互斥,而不是用作單個對象的對象級別鎖;


from:?http://www.importnew.com/20638.html

原文出處:?蘭亭風雨

總結

以上是生活随笔為你收集整理的Java并发编程(9):死锁(含代码)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日日日操操操 | 欧美啪视频 | 九九精品视频在线观看 | 夜夜夜影院| 亚洲国产精品综合久久久 | 99在线视频免费观看 | 亚洲精品在线免费 | 日韩精品在线免费 | 国产h视频 | 操日本老妇| 男生和女生操操 | 国产欧美综合一区 | 国产精品高清在线 | 日韩av免费在线 | 国产乱性| 欧美午夜一区二区 | 天天天天| 天天干影院 | 激情五月av| 亚洲美女偷拍 | 亚洲一本二本 | 91桃色视频在线观看 | 国产精品探花视频 | 欧美丰满熟妇xxxxx | 国外成人在线视频 | 免费看成人 | 狠狠gao | 亚洲成人一二区 | 一本色道久久88综合日韩精品 | 蜜桃tv一区二区三区 | 国产激情av在线 | 久久国产精品免费视频 | 欧美精品乱人伦久久久久久 | 日本成人在线播放 | 国产亚韩| 国产成人一级片 | 欧美影视一区二区 | 久久久久久久久久久久久久国产 | 日韩亚洲第一页 | 国产精品视频在线播放 | 欧美精品videos另类日本 | 中文字幕人成 | 国产伦精品一区二区三区四区视频 | 最近中文字幕免费视频 | 91成人在线看 | 永久av在线免费观看 | 久久综合婷婷 | 91麻豆蜜桃一区二区三区 | 91精品视频免费看 | 一本到在线 | 啪啪导航 | 亚洲精品乱码久久久久久蜜桃欧美 | 在线观看视频福利 | 99视频在线看 | 久久久久久亚洲av无码专区 | 国产一区二区三区四区精 | 欧美精品日韩 | 亚洲综合在线一区二区 | 久久国产精 | 国内自拍真实伦在线观看 | 国产主播中文字幕 | 午夜丁香网 | 国产成人专区 | 欧美一级视频免费 | 亚洲区小说 | 免费污视频 | www.啪啪.com | 日韩av福利 | 亚洲一区二区成人 | 激情五月婷婷久久 | 天堂欧美城网站 | 香蕉视频二区 | h官场少妇第三部分 | 公交顶臀绿裙妇女配视频 | 欧美伦理在线观看 | 国产人妻精品午夜福利免费 | 亚洲欧美第一 | 啪啪中文字幕 | 国产精品中文字幕在线 | 成人在线免费播放视频 | 中文无码熟妇人妻av在线 | 乱lun合集男男高h | 成人hd| japan粗暴video蹂躏| 欧美极品少妇×xxxbbb | 91视频观看 | 国精产品一区一区三区有限公司杨 | 99精品福利视频 | 强制高潮抽搐哭叫求饶h | 九九影视理伦片 | 一区二区在线视频免费观看 | 男女草逼视频 | 久久伊人一区二区 | 日韩毛片免费看 | 激情av网 | 久久99热久久99精品 | 亚洲人体在线 | 人人艹人人 | av在线网页 |