2.2.12多線程的死鎖

java線程死鎖是一個經(jīng)典的問題方援,因為不同的線程都在等待根本不可能被釋放的鎖黎休,從而導致所有的任務都無法繼續(xù)完成欢揖。在多線程技術中陶耍,“死鎖”是必須避免的,因為這會造成線程的“假死”

/**
 * @author wuyoushan
 * @date 2017/4/25.
 */
public class DealThread implements Runnable {

    public String username;
    public Object lock1=new Object();
    public Object lock2=new Object();

    public void setFlag(String username){
        this.username=username;
    }

    @Override
    public void run() {
        if (username.equals("a")){
            synchronized (lock1){
                try{
                    System.out.println("username="+username);
                    Thread.sleep(3000);
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
                synchronized (lock2){
                    System.out.println("按lock1->lock2代碼順序執(zhí)行了");
                }
            }
        }

        if (username.equals("b")){
            synchronized (lock2){
                try{
                    System.out.println("username="+username);
                    Thread.sleep(3000);
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
                synchronized (lock1){
                    System.out.println("按lock2->lock1代碼順序執(zhí)行了");
                }
            }
        }
    }
}

/**
 * @author wuyoushan
 * @date 2017/3/20.
 */
public class Run {
    public static void main(String[] args){
        try {
            DealThread t1=new DealThread();
            t1.setFlag("a");

            Thread thread1=new Thread(t1);
            thread1.start();
            Thread.sleep(100);

            t1.setFlag("b");
            Thread thread2=new Thread(t1);
            thread2.start();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

程序的運行結(jié)果為:

username=a
username=b

死鎖是程序設計的bug她混,在設計程序時就要避免雙方互相持有對方的鎖情況物臂。需要說明的是,本實驗使用synchronized嵌套的代碼結(jié)構來實現(xiàn)死鎖产上,其實不使用嵌套的synchronized代碼結(jié)構也會出現(xiàn)死鎖棵磷,與嵌套不嵌套無任何關系,不要被代碼結(jié)構所誤導晋涣。只要互相等待對方釋放鎖就有可能出現(xiàn)死鎖仪媒。

摘選自 java多線程核心編程技術-2.2.12

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市谢鹊,隨后出現(xiàn)的幾起案子算吩,更是在濱河造成了極大的恐慌,老刑警劉巖佃扼,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件偎巢,死亡現(xiàn)場離奇詭異,居然都是意外死亡兼耀,警方通過查閱死者的電腦和手機压昼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘤运,“玉大人窍霞,你說我怎么就攤上這事≌兀” “怎么了但金?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長郁季。 經(jīng)常有香客問我冷溃,道長,這世上最難降的妖魔是什么梦裂? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任似枕,我火速辦了婚禮,結(jié)果婚禮上塞琼,老公的妹妹穿的比我還像新娘菠净。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布毅往。 她就那樣靜靜地躺著牵咙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪攀唯。 梳的紋絲不亂的頭發(fā)上洁桌,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音侯嘀,去河邊找鬼另凌。 笑死,一個胖子當著我的面吹牛戒幔,可吹牛的內(nèi)容都是我干的吠谢。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼诗茎,長吁一口氣:“原來是場噩夢啊……” “哼工坊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起敢订,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤王污,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后楚午,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體昭齐,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年矾柜,在試婚紗的時候發(fā)現(xiàn)自己被綠了阱驾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡把沼,死狀恐怖啊易,靈堂內(nèi)的尸體忽然破棺而出吁伺,到底是詐尸還是另有隱情饮睬,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布篮奄,位于F島的核電站捆愁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏窟却。R本人自食惡果不足惜昼丑,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望夸赫。 院中可真熱鬧菩帝,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至握础,卻和暖如春辐董,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背禀综。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工简烘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人定枷。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓孤澎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親欠窒。 傳聞我的和親對象是個殘疾皇子亥至,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 1.解決信號量丟失和假喚醒 public class MyWaitNotify3{ MonitorObject m...
    Q羅閱讀 871評論 0 1
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法贱迟,內(nèi)部類的語法姐扮,繼承相關的語法,異常的語法衣吠,線程的語...
    子非魚_t_閱讀 31,587評論 18 399
  • 該文章轉(zhuǎn)自:http://blog.csdn.net/evankaka/article/details/44153...
    加來依藍閱讀 7,335評論 3 87
  • 尼古拉?尼葛洛龐帝的《數(shù)字化生存》一書曾火到脫銷茶敏,今年電子工業(yè)出版社又出了該書的20周年紀念版,定價一下子漲到了6...
    郭靜閱讀 325評論 0 2
  • 最近一段時間缚俏,單位的事不知道是多惊搏,還是人們把弦崩的太緊。比如忧换,工作出現(xiàn)復合狀態(tài)的時候恬惯,前一個月就已經(jīng)除了工作,忙...
    咫尺為鄰閱讀 350評論 0 0