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