[Java] Atomic VS Volatile

阅读时间: 3分钟

当大家谈论到Thread-safety就会有接触到Atomic (原子性)和Volatile (可见性)。
相信你们会好奇,为什么Volatile的中文会被解释为可见性呢? 完全和字典上的意思不同。
不过这是合理的,因为在Java中Volatile是指可以确保在应用程式中的可见性,同时支持变量直接写入到主记忆体(main memory)。
所以提到Volatile就会说它是表示可见性。

从字词上,Atomic (原子性)和Volatile (可见性)都是很抽象。
但可以作简单解释,
首先,它们是两个完全不同的概念,
一个Atomic的操作用于非Volatile的变量上,是不会把变量储在主记忆体(main memory)。
所以其他thread或其他task在存取同一个非Volatile的变量时,
是有可能不会在主记忆体(main memory)见到该变量的值。
假如在一个多个task同时存取同一个变量时,
就必需要将变量加上Volatile以确保它在主记忆体(main memory)内的可见性。
否则就要透过synchronization来应付刚才的问题,
因为synchronization也可以将变量的值带到主记忆体(main memory)。


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章