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

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

一道java面試題

一道java面試題

謝耳朵449144 2016-09-12 13:36:18
public?class?test1?{ ????private?int?a=1,?b=2; ????public?void?foo(){? ????????a=3; ????????b=4; ????} ????public?int?getA(){? ????????return?a; ????}???? ????public?int?getB(){ ????????return?b; ????} } 當線程1執行foo方法的時候,線程2訪問getA和getB會得到什么樣的結果?A: a=1, b=2????//都未改變B: a=3,b=4????//都改變了C: a=3,b=2????//a改變了,b未改變D: a=1,b=4????//b改變了,a未改變
查看完整描述

13 回答

已采納
?
白綠色

TA貢獻3條經驗 獲得超11個贊

其實答案是不定的,看哪個線程先搶到cpu時間。不能用代碼的先后順序決定線程的執行順序。而且線程有沒有加鎖等等都會影響。

//?就這個例子來說大多數情況都變。
public?static?void?main(String[]?args)?{
????final?test1?t?=?new?test1();
	
	new?Thread()?{
		public?void?run()?{
			t.foo();
		}
	}.start();
	
	new?Thread()?{
		public?void?run()?{
			System.out.println(t.getA()?+?"--"?+?t.getB());
		}
	}.start();
	
}

//?但是實際項目中如果foo()執行的時間長,可能foo還沒執行完,cpu就會把時間片切換到第二個線程執行。
//?所以每次的結果可能都不一樣。
//?例如把foo()改成這樣,讓它的執行時間變長,可能就都不變。把循環次數改小,執行時間變短,可能都變
public?void?foo(){
????long?i?=?0;
????while(i<1000000000)?{
	int?c?=?a?+?b;
	i++;
????}
????a=3;
????b=4;
}


查看完整回答
10 反對 回復 2016-09-12
?
JustWannaHugU

TA貢獻452條經驗 獲得超796個贊

我選A

都未改變

查看完整回答
6 反對 回復 2016-09-12
?
krisleo

TA貢獻2條經驗 獲得超2個贊


abcd都可能,看那個線程搶到CPU,另一個線程執行到什么地方,搶CUP是不固定的,所以所有的答案理論上運行無限次時候是都有可能發生的。

查看完整回答
1 反對 回復 2016-09-13
?
灬elliott

TA貢獻63條經驗 獲得超17個贊

祝你面試順利

查看完整回答
反對 回復 2016-09-13
?
惟愿_無事常相見

TA貢獻30條經驗 獲得超25個贊

我腫么感覺abcd=_=

查看完整回答
反對 回復 2016-09-12
?
噼喱啪啦

TA貢獻392條經驗 獲得超170個贊

貼出全部代碼我好看清楚。

查看完整回答
反對 回復 2016-09-12
  • 噼喱啪啦
    噼喱啪啦
    a=3,b=4 是在一個方法里面操作的。 如果沒有調用方法,則值不會改變
?
綠洲仙人球

TA貢獻39條經驗 獲得超47個贊

建議提問者把輸出調用方法的代碼也貼出來,我通過new test1 的方法創建一個實例,然后調用方法,輸出的答案是B

Java中沒有全局變量的概念,需要分清是對變量的引用改值還是對變量本身改值


查看完整回答
反對 回復 2016-09-12
?
和木雪3217235

TA貢獻13條經驗 獲得超4個贊


選A吧。不過不知道你的截圖是不是整個題目的。雖然你定義了foo函數。在里面重新定義了A,B的值。但是你并沒有對foo這個函數有過操作。所以,a、b的值都是原來初始化的時候的值、

查看完整回答
反對 回復 2016-09-12
?
qq_淡然的微笑

TA貢獻1條經驗 獲得超0個贊

說一下選A的原因啊,大神求指教

查看完整回答
反對 回復 2016-09-12
?
ziom

TA貢獻948條經驗 獲得超1109個贊

選A.

查看完整回答
1 反對 回復 2016-09-12
  • 13 回答
  • 7 關注
  • 2919 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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