线程中需要特别注意的volatile

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

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

多线程---volatile关键字

在多线程中,volatile关键字是很重要的一个知识点,在多线程共享资源的时候,每个线程数据对外都是不可见的,这就容易出现”脏读”现象,其实就是线程私有堆栈中的数据和公共堆栈中的数据不同步造成的.解决...
  • baidu_17508977
  • baidu_17508977
  • 2016年12月22日 15:50
  • 921

多线程之volatile关键字

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

浅谈Volatile与多线程

浅谈Volatile与多线程 最近看的比较杂,摘了一些人的笔记! 随着多核的日益普及,越来越多的程序将通过多线程并行化的方式来提升性能。然而,编写正确的多线程程序一直是一件...
  • zhangjikuan
  • zhangjikuan
  • 2017年02月07日 21:45
  • 340

Java基础之volatile,static,synchronized的区别

一说起共享,线程安全之类种种我们很容易就想到了这三个关键字,但是当牵扯到高并发的时候,我们又很容易被这三个概念搞糊涂,跑出来的程序驴头不对马嘴。 首先先说volatile和synchronized之...
  • jiang1peng2hui3
  • jiang1peng2hui3
  • 2016年01月22日 11:51
  • 756

volatile线程不安全例子

volatile并不能保证在运算时多线程 public class VolatileTest { public static volatile int race = 0; public ...
  • gaotong2055
  • gaotong2055
  • 2014年07月08日 15:29
  • 1415

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

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

单例模式singleton为什么要加volatile

或者许多的朋友在使用单例模式中会学到双重检查加锁(double-checked locking)的应用。public class Singleton { private volatile st...
  • jm_heiyeqishi
  • jm_heiyeqishi
  • 2016年04月04日 00:13
  • 3158

Java之多线程内存可见性_2(volatile实现可见性)

volatile实现可见性 volatile关键字: 1.能够保证volatile变量的可见性 2.不能保证volatile变量符合操作的原子性 volatile如何实现内存可见性:深入来说:通过加...
  • u014293922
  • u014293922
  • 2015年12月17日 12:55
  • 508

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

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

Java线程面试题(03) Java中的volatile如何工作? Java中的volatile关键字示例

什么是Java中的volatile变量以及何时使用Java中的volatile变量是一道Java面试中经常被问及的多线程访问问题。尽管许多程序员知道什么是volatile变量,但是他们在回答第二部分问...
  • u010096900
  • u010096900
  • 2017年11月27日 13:03
  • 352
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:线程中需要特别注意的volatile
举报原因:
原因补充:

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