public
class
tcatch (exception e)
// i++;
} system.out.
println
("m end");
}public
static
void
main
(string[
] args)
catch
(exception e)
t.runing =
false;}
}
結果會:我一直以為,時間片輪詢,遲早runing會重新整理到主存,只是有延遲。而volatile會立即重新整理到快取。沒想到結果是程式根本不會停止。
}到了時間節點上,時間同步成功突然出現意外,程式結束了:
}結果程式不會結束了。
}結果又會:
總結:為什麼會產生這種奇怪的事件呢?
(1)第1段**:因為裡面沒有幹其他事,所有while不會讓出時間片,也不會將主存中的runing標誌重新整理到自己的執行緒中。
(2)第2段**:println的原始碼會呼叫如下**段:
private
void
write
(string s)
}catch
(interruptedioexception x)
catch
(ioexception x)
}
於是,println方法通過synchronized的可見性造成了上面的結果。
(3)第3段**:理所當然也遇到了與第1段**相似的經歷
(4)第4段**:呼叫sleep**,cup重新進入**。發現變成了false(ps:純屬個人理解
)
第一次討論
昨天qq上交流了一下找到的開發板,感覺單獨購買工控板和螢幕實在是麻煩,於是想到直接買帶螢幕的學習板,要貴一些但是簡便了很多。一般的學習板上提供了溫度感測器的介面,但是均沒有提供重量感測器的介面,今天出來吃飯的時候問了一下c,他說可以直接購買轉換器或者自己寫程式進去,看他的意思好像寫程式不太容易,直接...
第一次的討論
專案上少有的討論,雖然人數少了一些,不過對當前專案總結多了不少,也有一些感悟,應該用點時間,放下心來,去好好思考與消化專案的東西了,把學到的東西用出來,那才是真正屬於自己的.今天的討論挺有意義.發現了自己乙個要改的缺點,對自己第一感覺不喜歡的東西,都會強制著,讓自己一直不喜歡下去,還是要改改咯,多一...
Volatile如何保證有序性(禁止指令重排)
volatile如何保證有序性 禁止指令重排 1.首先我們要了解計算機在執行程式時,為了提高效能,編譯器和處理器一般都會對指令做重排,一般分為以下三種 單執行緒環境裡面確保程式最終執行的結果和 順序執行的結果一致。處理器在進行指令重排時必須要考慮指令之間的資料依賴性。多執行緒環境中線程交替執行,由於...