Java內(nèi)存模型與線程

概述

  多任務(wù)處理在現(xiàn)代計算機(jī)操作系統(tǒng)中幾乎已是一項必備的功能,多任務(wù)運(yùn)行是壓榨手段,就如windows一樣,我們使勁的壓榨它運(yùn)行多個任務(wù),俱要high又要耍。并發(fā)則是另外一種更具體的應(yīng)用場景。每秒事物處理數(shù)(Transactions per Second,tps)是最重要的指標(biāo)。開發(fā)人員應(yīng)該了解與運(yùn)用并發(fā)。

硬件的效率與一致性

  除了有軟件上的并發(fā),物理計算機(jī)也有并發(fā)問題。計算機(jī)的存儲設(shè)備與處理器運(yùn)算速度有幾個數(shù)量級的差距,現(xiàn)代計算機(jī)都不得不加入一層高速緩存來作為內(nèi)存與處理器之間的緩沖,這樣能夠提升處理速度?;诟咚倬彺娼鉀Q了處理器與內(nèi)存的速度矛盾,但是也提高了計算機(jī)系統(tǒng)復(fù)雜度,帶來了緩存一致性問題。在多處理器系統(tǒng)中,每個處理器有自己的高速緩存,而它們又共享同一個主內(nèi)存。如圖:

移動開發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)

  多個處理器的任務(wù)都涉及同一塊主內(nèi)存區(qū)域時,將可能導(dǎo)致各自的緩存數(shù)據(jù)不一致。為了解決這種一致性的問題,需要各個處理器訪問緩存時都遵循一些協(xié)議,在操作時要根據(jù)協(xié)議來進(jìn)行操作,這類協(xié)議有MSI、MESI(Illinois Protoclo)、MOSI、Synapse、Firefly以及Dragon Protocal等。

  除了增加高速緩存之外,為了使處理器得到充分利用,