[問題] volatile這個該死的修飾詞到底是幹嘛用的
如題
我已經找過google、javaworld都找不到滿意的答案
要嘛就是說他是什麼強制Thread不能用內存要去讀記憶體 沒範例
要嘛就是有簡單的程式範例 但是我實作結果又跟說的不一樣
1.class Test {
2. static volatile int i = 0, j = 0;
3. static void one() { i++; j++; }
4. static void two() {
5. System.out.println("i=" + i + " j=" + j);
6. }
7.}
這個
他說i和j會同時更新 但是印出來i和j還是會不一樣啊
public class StoppableTask extends Thread {
private volatile boolean pleaseStop;
public void run() {
while (!pleaseStop) {
// do some stuff...
}
}
public void tellMeToStop() {
pleaseStop = true;
}
}
這個
他說如果不用volatile會導致無限循環 可是明明不寫volatile呼叫tellMeStop
他還是會停下來阿
到底是怎樣我快瘋了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.232.98.62
→
04/14 05:41, , 1F
04/14 05:41, 1F
→
04/14 11:06, , 2F
04/14 11:06, 2F
→
04/14 11:09, , 3F
04/14 11:09, 3F
推
04/14 12:35, , 4F
04/14 12:35, 4F
→
04/14 18:14, , 5F
04/14 18:14, 5F
→
04/15 01:37, , 6F
04/15 01:37, 6F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):