已采納回答 / passionfoure
這里面有兩個VOLATILE變量,它包含了一個不變式就是LOW<UP(?if (value > upper) 和???if (value < low)?)public class A { ? ?private volatile?int low=0;? ?private volatile?int?up=100;? ?public int getLow() { return low; } ? ?public int getUp() { return up; } ? ?public void ...
2015-05-16
最贊回答 / meetyu
volatile本身不保證獲取和設(shè)置操作的原子性,僅僅保持修改的可見性。但是java的內(nèi)存模型保證聲明為volatile的long和double變量的get和set操作是原子的
2015-05-06
已采納回答 / meetyu
volatile本身不保證獲取和設(shè)置操作的原子性,僅僅保持修改的可見性。但是java的內(nèi)存模型保證聲明為volatile的long和double變量的get和set操作是原子的
2015-04-28
最新回答 / MrToms
volatile 變量可以被看作是一種 “程度較輕的 synchronized”;與 synchronized 塊相比,volatile 變量所需的編碼較少,并且運行時開銷也較少,但是它所能實現(xiàn)的功能也僅是 synchronized 的一部分。
2015-04-13
已采納回答 / MartonZhang
?出現(xiàn)0是因為讀線程先得到了執(zhí)行,讀線程執(zhí)行完,寫線程才執(zhí)行,這個我里面也有講到,你稍微注意下,在“synchronized實現(xiàn)可見性(下)”的第03:30之后!另外,慕課網(wǎng)這點估計剪切的估計太快了,有點不太容易注意到,可以在寫線程和讀線程之間加個休眠操作,讓寫線程執(zhí)行完,讀線程在執(zhí)行,也可以使用wait和notify來控制線程執(zhí)行的順序!
2015-04-05
最贊回答 / 慕婉清3525975
可參考 http://blog.csdn.net/xiaolinzi007/article/details/44487851 具體為什么idea返回2,是因為多了個monitor ctrlbreak線程。
2015-04-01