天天看点

volatile与zookeeper

为什么我会把volatile与zookeeper放在一起,原因是这两个有个共同点,就是可见性。

我写了两个测试代码,先给出volatile的测试代码

这是zookepper的测试代码:

volatile修饰的变量在多线程环境下的作用是全局的可见性,即当一个线程修改后,其他线程对此变量是立马可见的,这一点我发现和在分布式集群环境下zookeeper所存储的变量的特性相同,当集群中的某个结点修改zookeeper中的变量后,所有监听的结点都能立马感知,会收到具体的变更事件,这就是我为什么要把volatile和zookeeper放在一起的原因,希望能对理解volatile和zookeeper有些帮助。

volatile修饰的变量与原子性是没有关系的,我最初接触volatitle是在写嵌入式C程序时,对于摄像头采集的数据用volatile修饰,意即当硬件使数据变化时,代码也能立马感知处理。

从Demo代码可以拓展到分布式锁的应用,具体怎么用应该很明了了。