第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

使用java多線程時得到不可思議的結(jié)果,想了好長時間都模擬不出是怎樣得到的?

使用java多線程時得到不可思議的結(jié)果,想了好長時間都模擬不出是怎樣得到的?

幕布斯6054654 2019-01-17 15:45:03
1、想了解不同類型線程之間的關(guān)系(此程序沒考慮線程安全問題),想模擬電腦是怎樣執(zhí)行多線程,但是得到一個莫名奇妙的結(jié)果。思考了很長時間,還是沒有解決,希望能得到幫助; 2、代碼如下 public class StudentDemo { public static void main(String[] args) { Student s = new Student(); SetThread st = new SetThread(s); GetThread gt = new GetThread(s); Thread t1 = new Thread(st, "SetTread"); Thread t2 = new Thread(gt,"GetTread"); t2.start(); t1.start(); } } public class Student { public String name; public int age; } public class SetThread implements Runnable{ private Student s; public SetThread(Student s) { this.s = s; } @Override public void run() { s.name = "jzian"; s.age = 27; } } public class GetThread implements Runnable { private Student s; public GetThread(Student s) { this.s = s; } @Override public void run() { System.out.println( s.name + "-----" + s.age); } } 3、得到的結(jié)果為:null----27請問是怎樣得到這樣的結(jié)果的?
查看完整描述

4 回答

?
揚帆大魚

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

這個應(yīng)該與指令重排序沒有關(guān)系。編譯器在某些情況下會對指令的順序進行重排,但是肯定是基于一定的理由。這段代碼我看不出來為什么要重排指令順序。

我認為原因很可能出在可見性上。兩個變量都不是volatile的,因此無法保證在一個線程中賦值后在另一個線程中一定可見??梢試L試加上volatile,然后看看還會不會出現(xiàn)這種情況。如果不會出現(xiàn),那么就與指令重排無關(guān)

查看完整回答
反對 回復(fù) 2019-03-01
?
至尊寶的傳說

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

子線程s1和s2的執(zhí)行順序不確定,所以你說的結(jié)果是可能的結(jié)果中的一種

查看完整回答
反對 回復(fù) 2019-03-01
?
慕運維8079593

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

java多線程調(diào)度方式默認是搶占式。線程t1執(zhí)行到一半(給age賦完值),這時候t2搶到了執(zhí)行權(quán),打印出來就只有age,name為String類型的默認值。

查看完整回答
反對 回復(fù) 2019-03-01
?
FFIVE

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

問題出在這里
t2.start();
t1.start();

線程先執(zhí)行g(shù)et方法,set方法你還沒設(shè)值,所以默認是null和0,為什么有時候有值呢,由于線程隨機性,有時候t1先執(zhí)行,t2后執(zhí)行,就得到27,zjan
先這樣改
t1.start();
t2.start();
如果要保證得到的都是27,zjan還要保證線程同步性,上面說的加關(guān)鍵字volatie以及synchronize都能解決
手機碼字,見諒

查看完整回答
反對 回復(fù) 2019-03-01
  • 4 回答
  • 0 關(guān)注
  • 543 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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