課程
/后端開發
/Java
/細說Java多線程之內存可見性
不變式是指什么類型的式子
2015-05-16
源自:細說Java多線程之內存可見性 4-5
正在回答
這里面有兩個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 setLow(int value) { ? ? ? ?if (value > upper) ? ? ? ? ? ? system.out.print("......."); ? ? ? ?low = value; ? ?} ? ?public void setUp(int value) { ? ? ? ?if (value < low) ? ? ? ? ? ?system.out.print(".......");
? ? ? ?up = value; ? ?}}
初始值是0和100,如果有兩個線程同時操作set函數,一比如A線程操作setlow(4),B線程setup(3),最后結果是4和3。
meetyu 提問者
_曲終散
qq_夜39度_0 回復 _曲終散
還是因為volatile不能實現原子性。
同問啊。
其他變量:是指的volatile變量,還是普通變量?
不變式:是什么樣的?
舉報
用兩種方式實現內存可見性,代領大家深層次學習Java中的內存
9 回答不是說volatile不保證原子性嗎?為什么對于64位類型的變量用volatile修飾?
1 回答為什么兩個volatile變量在不變式中就會使得volatile線程不安全?
1 回答最后總結中,為什么給long或double類型的變量加volatile關鍵字可以保證原子性?
1 回答原子性是什么意思?
3 回答為什么共享變量的可見性一定是private
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-05-28
這里面有兩個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 setLow(int value) {
? ? ? ?if (value > upper)
? ? ? ? ? ? system.out.print(".......");
? ? ? ?low = value;
? ?}
? ?public void setUp(int value) {
? ? ? ?if (value < low)
? ? ? ? ? ?system.out.print(".......");
? ? ? ?up = value;
? ?}
}
初始值是0和100,如果有兩個線程同時操作set函數,一比如A線程操作setlow(4),B線程setup(3),最后結果是4和3。
2017-08-01
還是因為volatile不能實現原子性。
2015-05-20
同問啊。
其他變量:是指的volatile變量,還是普通變量?
不變式:是什么樣的?