若變量被volatile修飾,當在對該變量進行修改時,JVM會多執(zhí)行一個lock操作,該操作是對寄存器的值加0,主要作用是將本線程(CPU)的Cache寫入主內存,并引起其他線程的cache的無效,相當于對Cashe的變量做了一次store和write操作(參見JVM主內存與工作內存的8種交互方式以及相應的8種約束),從而導致volatile的可見性。synchronized的原子性是利用了JVM內存交互的lock和unlock及其對應約束條件來做到的
2016-11-28