线程中需要特别注意的volatile

原创 2004年07月09日 09:49:00
关于volatile

  我们知道,在Java中设置变量值的操作,除了long和double类型的变量外都是原子操作,也就是说,对于变量值的简单读写操作没有必要进行同步。这在JVM 1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下volatile关键字的使用变得非常重要。在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。要解决这个问题,只需要像在本程序中的这样,把该变量声明为volatile(不稳定的)即可,这就指示JVM,这个变量是不稳定的,每次使用它都到主存中进行读取。一般说来,多任务环境下各任务间共享的标志都应该加volatile修饰。

多线程之volatile关键字

之前讲解了多线程的synchronized关键字,现在再学习一下volatile关键字。1 volatile关键字用来做什么?线程安全包括两个方面:原子性和可见性。Java的同步机制都是围绕这两个方面...
  • Trigl
  • Trigl
  • 2016年04月15日 20:43
  • 1116

C++多线程有必要加volatile么?

1volatile的作用是: 作为指令关键字,确保本条指令不会因编译器的优化而省略, 且要求每次直接读值.简单地说就是防止编译器对代码进行优化.比如如下程序: XBYTE[2] = 0x55...
  • liuhhaiffeng
  • liuhhaiffeng
  • 2016年09月10日 12:35
  • 808

【多线程系列】Volatile总结之同步问题

Volatile总结之同步问题 在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。 Java语言是支持多...
  • gooooooal
  • gooooooal
  • 2015年11月24日 16:05
  • 1682

多线程之内存可见性Volatile(一)

从这篇博文开始,我们开始分享一些多线程的内容,毕竟在工作中,使用多线程比较多。多总结一下,终归没有坏处。这个系列的文章不会特别长,争取在3到5分钟之间结束,主要以说明白内容,给出相应的解决方案,重点在...
  • jiuqiyuliang
  • jiuqiyuliang
  • 2017年03月15日 11:59
  • 1610

Java线程安全之volatile关键字

我们知道在多线程的场景下,线程安全是必须要着重考虑的。Java语言包含两种内在的同步机制:同步块(synchronize关键字)和 volatile 变量。但是其中 Volatile 变量虽然使用简单...
  • Roy_70
  • Roy_70
  • 2017年04月07日 10:37
  • 2430

彻底理解java语言的线程安全volatile用法

Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,...
  • zhanghongjie0302
  • zhanghongjie0302
  • 2016年05月18日 17:53
  • 8925

volatile关键字

关于volatile关键字,下列描述不正确的是? 正确答案: B D   你的答案: A C (错误) 用volatile修饰的变量,每次更新对其他线程都是立即可见的。 ...
  • Stand1210
  • Stand1210
  • 2016年09月09日 18:14
  • 473

volatile 可以保证可见性,但不能保证原子性。某种意义上是线程不安全的

在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。 Java语言是支持多线程的,为了解决线程并发的问题,在...
  • shukebai
  • shukebai
  • 2016年04月15日 17:00
  • 1553

从volatile说到i++的线程安全问题

简介 volatile关键字保证了在多线程环境下,被修饰的变量在别修改后会马上同步到主存,这样该线程对这个变量的修改就是对所有其他线程可见的,其他线程能够马上读到这个修改后值.   ...
  • ch717828
  • ch717828
  • 2015年07月23日 21:10
  • 411

Volatile真的能解决线程并发吗?

今天看见有一兄弟用的Volatile 修饰的变量 来保证系统中此值的唯一性,以前我也用过volatile 个人认为这样不能保证在线程并发的情况 值的正确性。       用volatile修饰的变量 ...
  • cainiaoxiaozhou
  • cainiaoxiaozhou
  • 2015年09月28日 12:40
  • 887
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:线程中需要特别注意的volatile
举报原因:
原因补充:

(最多只允许输入30个字)