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

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

這個線程是怎么執行的?

這個線程是怎么執行的?

千萬里不及你 2019-04-18 15:15:54
package thread;public class TT2 implements Runnable{int b = 100;public synchronized void m1() throws Exception{                      b = 1000;     Thread.sleep(5000);     System.out.println("b = " +  b); } public  synchronized void m2() throws Exception{     Thread.sleep(7000);     b = 2000; } public void run() {     try {         m1();     }catch(Exception e) {         e.printStackTrace();     } } public static void main(String[] args)throws Exception{     TT2 tt = new TT2();     Thread t = new Thread(tt);     t.start();     tt.m2();     System.out.println(tt.b); }}打印的結果是: 1000   b=1000 我不明白這個結果是怎么來的,為什么不是先執行m1的鎖呢
查看完整描述

3 回答

?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

代碼執行順序是 m2 -》打印tt.b -》m1 -》打印b=?,其中打印tt.b時同時在很短時間給b賦值2000和1000,所有第一次打印可能會是1000或2000第二次肯定是b=1000


查看完整回答
反對 回復 2019-05-16
  • 3 回答
  • 0 關注
  • 392 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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