亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

多線程中關于鎖問題

多線程中關于鎖問題

package?com.multi; public?class?ThreadTest?implements?Runnable?{ private?Integer?ticket?=?10; private?Integer?count?=?0; private?byte[]?lock?=?new?byte[0]; public?void?run()?{ synchronized?(ticket)?{ while?(true)?{ if?(ticket?<=?-100)?{ break; } System.out.println(String.format("thread:?%s?,?tiketnum?=?%d?do?some?thing" ,Thread.currentThread().getName() ,ticket--)); count++; } } } public?static?void?main(String[]?args)?{ ThreadTest?mTh1?=?new?ThreadTest(); Thread[]?th?=?new?Thread[5]; for?(int?i?=?0;?i?<?5;?i++)?{ th[i]=?new?Thread(mTh1,"th"+i); th[i].start(); } try?{ Thread.sleep(1500); }?catch?(InterruptedException?e)?{ //?TODO?Auto-generated?catch?block e.printStackTrace(); } System.out.println(mTh1.count); } } 執行結果 thread:?th4?,?tiketnum?=?6?do?some?thing thread:?th3?,?tiketnum?=?7?do?some?thing thread:?th4?,?tiketnum?=?5?do?some?thing thread:?th3?,?tiketnum?=?4?do?some?thing thread:?th3?,?tiketnum?=?2?do?some?thing thread:?th4?,?tiketnum?=?3?do?some?thing thread:?th4?,?tiketnum?=?0?do?some?thing thread:?th4?,?tiketnum?=?-1?do?some?thing thread:?th4?,?tiketnum?=?-2?do?some?thing thread:?th4?,?tiketnum?=?-3?do?some?thing thread:?th4?,?tiketnum?=?-4?do?some?thing thread:?th4?,?tiketnum?=?-5?do?some?thing thread:?th4?,?tiketnum?=?-6?do?some?thing thread:?th4?,?tiketnum?=?-7?do?some?thing thread:?th4?,?tiketnum?=?-8?do?some?thing thread:?th1?,?tiketnum?=?9?do?some?thing …………………… …………java多線程中,鎖不起作用?
查看完整描述

4 回答

?
qq_青棗工作室_0

TA貢獻446條經驗 獲得超754個贊

synchronized (ticket) ,改為?synchronized (lock)?

查看完整回答
3 反對 回復 2016-05-10
?
竹馬君

TA貢獻64條經驗 獲得超115個贊

關鍵在
System.out.println(String.format("thread:?%s?,?tiketnum?=?%d?do?some?thing",Thread.currentThread().getName(),ticket--));

如果將ticket--移出來,改寫成
System.out.println(String.format("thread:?%s?,?tiketnum?=?%d?do?some?thing",Thread.currentThread().getName(),ticket));
ticket--;
輸出就正常了
thread:?th0?,?tiketnum?=?10?do?some?thing
thread:?th0?,?tiketnum?=?9?do?some?thing
thread:?th0?,?tiketnum?=?8?do?some?thing
thread:?th0?,?tiketnum?=?7?do?some?thing
thread:?th0?,?tiketnum?=?6?do?some?thing
thread:?th0?,?tiketnum?=?5?do?some?thing
thread:?th0?,?tiketnum?=?4?do?some?thing
thread:?th0?,?tiketnum?=?3?do?some?thing
thread:?th0?,?tiketnum?=?2?do?some?thing
thread:?th0?,?tiketnum?=?1?do?some?thing
thread:?th0?,?tiketnum?=?0?do?some?thing
thread:?th0?,?tiketnum?=?-1?do?some?thing

查看完整回答
2 反對 回復 2016-05-10
  • 4 回答
  • 0 關注
  • 3305 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號