Java volatile关键字
Java volatile关键字 2013-03-27 15:29 89人阅读 评论 (0) 收藏 举报 1、什么是原子操作(atomic operation)? 原子操作是不需要synchronized. 所谓原子操作,是指不会被线程调度机制打断的操作。这种操作,一但开始,就一直运行到结束,中间不会有任何的context switch。 原子性不可能由软件单独保证--必须需要硬件的支持,因此是和架构相关的。 2、锁的作用 锁提供了两种主要特性:互斥(mutual exclusion)和可见性(visibility)。互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实 现对共享数据的协调访问协议,这样,一次就只有一个线程能够使用该共享数据。可见性要更加复杂一些,它必须确保释放锁之前对共享数据 做出的更改对于随后获得该锁的另一个线程是可见的 —— 如果没有同步机制提供的这种可见性保证,线程看到的共享变量可能是修改前的值或 不一致的值,这将引发许多严重问题。 3、类型描述符volatile Java语言包含两种内在的同步机制:同步块synchronized(或方法 或者lock)和 volatile 变量。这些机制的提出都是为了线程安全。 Volatile 变量的同步性较差(但有时它更简单并且开销更低),Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的