看板 java 關於我們 聯絡資訊
如題 我已經找過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
ogamenewbie:google volatile jls 04/14 05:41
pzyc79:多謝 其實第一個範例就是JLS的 但是我不懂他拿volatile取 04/14 11:06
pzyc79:代synchronized的意思 我試過做不出同樣效果 04/14 11:09
chchwy:你有念過OS的平行計算那章嗎? 04/14 12:35
pzyc79:沒有耶... 我去念看看 多謝指引 (真希望有中文版的 04/14 18:14
pzyc79:我明白了 volatile是關閉變數使用cpu寄存器的存取優化 04/15 01:37