天天看點

volatile與zookeeper

為什麼我會把volatile與zookeeper放在一起,原因是這兩個有個共同點,就是可見性。

我寫了兩個測試代碼,先給出volatile的測試代碼

這是zookepper的測試代碼:

volatile修飾的變量在多線程環境下的作用是全局的可見性,即當一個線程修改後,其他線程對此變量是立馬可見的,這一點我發現和在分布式叢集環境下zookeeper所存儲的變量的特性相同,當叢集中的某個結點修改zookeeper中的變量後,所有監聽的結點都能立馬感覺,會收到具體的變更事件,這就是我為什麼要把volatile和zookeeper放在一起的原因,希望能對了解volatile和zookeeper有些幫助。

volatile修飾的變量與原子性是沒有關系的,我最初接觸volatitle是在寫嵌入式C程式時,對于攝像頭采集的資料用volatile修飾,意即當硬體使資料變化時,代碼也能立馬感覺處理。

從Demo代碼可以拓展到分布式鎖的應用,具體怎麼用應該很明了了。