最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java線程死鎖問題

java線程死鎖問題

superkrissV 2015-02-15 21:50:12
public?class?TestDeadLock?implements?Runnable?{ ????public?static?int?flag?=1; ????public?static?Object?o1; ????public?static?Object?o2; ????@Override ????public?void?run()?{ ????????//?TODO?Auto-generated?method?stub ????????System.out.println("flag?=?"+flag); ????????if(flag?==?1){ ????????????synchronized(o1){ ????????????????try?{ ????????????????????Thread.sleep(5000); ????????????????}?catch?(Exception?e)?{ ????????????????????//?TODO?Auto-generated?catch?block ????????????????????e.printStackTrace(); ????????????????} ????????????} ????????????synchronized?(o2)?{ ????????????????System.out.println("1"); ????????????} ????????} ????????if(flag?==?0){ ????????????synchronized?(o2)?{ ????????????????try?{ ????????????????????Thread.sleep(5000); ????????????????}?catch?(Exception?e)?{ ????????????????????//?TODO?Auto-generated?catch?block ????????????????????e.printStackTrace(); ????????????????} ????????????????synchronized?(o1)?{ ????????????????????System.out.println("0"); ????????????????} ????????????} ????????} ????} ????public?static?void?main(String[]?args)?{ ????????TestDeadLock?td1?=?new?TestDeadLock(); ????????TestDeadLock?td2?=?new?TestDeadLock(); ????????td1.flag?=?1; ????????td2.flag?=?0; ????????Thread?t1?=?new?Thread(td1); ????????Thread?t2?=?new?Thread(td2); ????????t1.start(); ????????t2.start(); ????} }flag = 0Exception in thread "Thread-0" Exception in thread "Thread-1" flag = 0java.lang.NullPointerException?? ?at Thread.TestDeadLock.run(TestDeadLock.java:26)?? ?at java.lang.Thread.run(Unknown Source)java.lang.NullPointerException?? ?at Thread.TestDeadLock.run(TestDeadLock.java:26)?? ?at java.lang.Thread.run(Unknown Source)上面是運行結(jié)果,編譯沒有問題,求解釋。
查看完整描述

1 回答

已采納
?
藍胖子Torres

TA貢獻6條經(jīng)驗 獲得超4個贊

空指針了,要把o1和o2先實例化,才能給它加鎖

查看完整回答
1 反對 回復 2015-02-15
  • superkrissV
    superkrissV
    public static Object o1 = new Object(); public static Object o2 = new Object(); 實例化對象之后,編譯運行,過了sleep的時間后結(jié)果就出來了,并沒有死鎖,這是為什么?
  • 藍胖子Torres
    藍胖子Torres
    應為你的 o1和o2定義在了線程的內(nèi)部,所以相當于線程自己的變量,要對一個全局對象加鎖才能互斥
  • superkrissV
    superkrissV
    非常感謝!
  • 1 回答
  • 0 關(guān)注
  • 2023 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號