JAVA內(nèi)存模型 簡(jiǎn)稱:JMM
用于java線程之間的通信
JMM通過控制主內(nèi)存與每個(gè)線程的本地內(nèi)存之間的交互叨叙,來為java程序員提供內(nèi)存可見性保證
final只是指向不變私恬,但是指向的值有可能變,所以依然不是線程安全
(this引用逃逸是一件很危險(xiǎn)的事情麦萤,其他線程有可能通過這個(gè)引用訪問到“初始化了一半”的對(duì)象)鹿鳖,那在其他線程中就能看見final字段的值扁眯。
synchronize和voliate,前者保證了原子性翅帜、可見性姻檀。后者只保證了可見性
voliate可見性的保證,就是因?yàn)樵趏s的指令前加了一個(gè)lock涝滴,這個(gè)指令是使所有的線程工作內(nèi)存無效绣版,強(qiáng)制從主內(nèi)存讀寫。
synchronized可見性的保證歼疮,就是因?yàn)殒i杂抽,也就是同步塊