Java內存模型與線程
概述
多任務處理在現(xiàn)代計算機操作系統(tǒng)中幾乎已是一項必備的功能,多任務運行是壓榨手段,就如windows一樣,我們使勁的壓榨它運行多個任務,俱要high又要耍。并發(fā)則是另外一種更具體的應用場景。每秒事物處理數(shù)(Transactions per Second,tps)是最重要的指標。開發(fā)人員應該了解與運用并發(fā)。
硬件的效率與一致性
除了有軟件上的并發(fā),物理計算機也有并發(fā)問題。計算機的存儲設備與處理器運算速度有幾個數(shù)量級的差距,現(xiàn)代計算機都不得不加入一層高速緩存來作為內存與處理器之間的緩沖,這樣能夠提升處理速度?;诟咚倬彺娼鉀Q了處理器與內存的速度矛盾,但是也提高了計算機系統(tǒng)復雜度,帶來了緩存一致性問題。在多處理器系統(tǒng)中,每個處理器有自己的高速緩存,而它們又共享同一個主內存。如圖:
多個處理器的任務都涉及同一塊主內存區(qū)域時,將可能導致各自的緩存數(shù)據(jù)不一致。為了解決這種一致性的問題,需要各個處理器訪問緩存時都遵循一些協(xié)議,在操作時要根據(jù)協(xié)議來進行操作,這類協(xié)議有MSI、MESI(Illinois Protoclo)、MOSI、Synapse、Firefly以及Dragon Protocal等。
除了增加高速緩存之外,為了使處理器得到充分利用,