最新文章列表

java中的volatile变量

当今天在《java并发编程实战》这本书中看到 “volatile的语义不足以确保递增操作(count++)的原子性,除非你能确保只有一个线程对变量执行写操作”[size=large][/size] 这句话才知道前几天的那个程序为啥会出错。 还有: 加锁机制既能确保原子性又能确保可见性,而volatile变量只能确保可见性。 当且仅当满足一下所有条件时,才应该使用volatile变量: 1、对变量的写 ...
zeng1990 评论(0) 有777人浏览 2012-08-03 00:31

关于volatile类型的变量

转自CSDN上面看到的一段话,个人感觉解释的比较透彻易懂,拿来学习一下: http://topic.csdn.net/t/20060106/23/4502657.html volatile仅仅一个不起眼的关键字   尽 ...
yimenghust 评论(0) 有1158人浏览 2012-07-17 17:28

(转)单例模式-双重检查加锁机制

并不是每次进入getInstance方法都需要同步,而是先不同步,进入方法过后,先检查实例是否存在,如果不存在才进入下面的同步块。 双重检查加锁机制的时间会使用一个关键字volatile,他的意思是:被volatile修饰的变量的值,将不会被本地线程缓存,所有对该变量的读写都是直接操作共享内存,从而确保多个线程能正确的处理该变量。 public class Singleton { ...
lionlx 评论(0) 有1455人浏览 2012-05-07 11:50

浅谈Volatile

我们用一段简单的代码来开头 public int i = 0; public void increase(){ i++; } //getter     以上这段代码在多线程高并发的状态下能否保证所取得的i是所期待的值,答案肯定是不能的,因为对JAVA来说数据的操作是非原子性的。还有的就是部份人认为给变量i加上volatile关键字就能保证了数据操作的原子性,这显然是错误的。 ...
Lucky_BW 评论(1) 有806人浏览 2012-04-23 12:20

线程安全学习笔记(二)

两个常来说明volatile的例子: 例子1: package com.maximilian.www; public class MyTestThread extends Thread { volatile public static int count = 0; private int countPerThread = 0; private int _loopTimes= ...
maximilian_kevin 评论(0) 有588人浏览 2012-04-15 02:01

详解C中volatile关键字

volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:short flag;void ...
dolaameng328 评论(0) 有1930人浏览 2012-03-31 12:55

[转]CAS的含义及Java中AtomicXXX类的分析

维基百科: In computer science, the compare-and-swap CPU instruction ("CAS") (or the Compare & Exchange - CMPXCHG instruction in the x86 and Itanium architectures) is a special instruction tha ...
czj4451 评论(0) 有1434人浏览 2012-03-30 16:55

并发编程与高速缓存行(1)

参见文章: volatile 的深入剖析 http://www.infoq.com/cn/articles/ftf-java-volatile 高速并发框架 disruptor http://code.google.com/p/disruptor/ 对于disruptor的中文介绍和推崇者: http://jdon.org/ 对于如何高发出自己特色和场景特色亦或是业务特色的并发程序上面文章从一 ...
xylong 评论(0) 有1382人浏览 2012-03-21 20:40

重排序与volatile的介绍和资料

  指令重排序       指令重排序的原因:对主存的一次访问一般花费硬件的数百次时钟周期。处理器通过缓存(寄存器、cpu缓存等)能够从数量级上降低内存延迟的成本这些缓存为了性能重新排列待定内存操作的顺序。也就是说,程序的读写操作不一定会按照它要求处理器的顺序执行。 一、编译期重排序 编译期重排序的典型就是通过调整指令顺序,在不改变程序语义的前提下,尽可能减少寄存器的读取、存 ...
heavensay 评论(0) 有3512人浏览 2012-03-20 17:00

volatile简单理解

  习惯了先举个例子,这个是我学习时遇到的问题。    volatile x = 0;    A,B俩个线程。    都做加一操作x=x+1。      输出结果A线程X=1, B线程X=1.(一种情况)    我自己期望出现的结果:1,2。我的理解是,当A线程改变了x的值,B会及时知道,然后做加一操作,那么等到结果一定是2。可是忘了加操作和赋值是2个操作,x=x+1并非原子性。    分析: ...
lujin55 评论(0) 有1113人浏览 2012-03-19 15:16

Java中的transient,volatile和strictfp关键字

Java中的transient,volatile和strictfp关键字     如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。例如: Java代码   class T {       transient int a;  //不需要维持       int b;  //需要维持    }   class T { trans ...
yypiao 评论(1) 有912人浏览 2012-03-16 19:59

Java volatile

Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。 我们知道,在Java中设置变量值的操作,除了long和double类型的变量外都是原子操作,也就是说,对于变量值的简单读写操作没有必要 ...
gavin_zhang 评论(0) 有1061人浏览 2012-03-07 16:40

【java并发】基于JUC CAS原理,自己实现简单独占锁

synchronized的基本原理回顾 在jvm内部,所有对象都含有单一的锁,jvm负责跟踪监视被加锁次数,叫做对象监视器。当线程第一次给对象加锁的时候,计数器 ...
singleant 评论(7) 有7847人浏览 2012-02-14 13:47

java线程同步中volatile关键字的使用场景

关键字volatile可以说是java虚拟机提供的最轻量级的同步机制,由于它不太容易被正确地、完整地理解,很少被人用到。但是什么时候适合用volatile呢?一般来说:当一个变量的值的修改不依赖原来的值时,就满足了volatile关键字的使用场景。 例1 private int value = 0; public void setValue(int value){ this.val ...
liu2811751 评论(0) 有1777人浏览 2012-02-09 17:21

Java关键字

Java关键字(keywords)  abstract    default    if            private      this boolean     do         implements    protected    throw break       double     import        public       throws byte        e ...
q15106202446 评论(0) 有769人浏览 2012-01-20 10:16

正确使用Volatile 变量

原文:http://www.ibm.com/developerworks/cn/java/j-jtp06197.html Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile ...
iamxi 评论(0) 有989人浏览 2012-01-19 13:26

Java中的transient,volatile和strictfp关键字

Java中的transient,volatile和strictfp关键字 转载来自:http://www.iteye.com/topic/52957 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。例如: Java代码
fgh2011 评论(0) 有961人浏览 2011-12-05 11:31

Java中的volatile关键字

我们知道,在Java中设置变量值的操作,除了long和double类型的变量外都是原子操作,也就是说,对于变量值的简单读写操作没有必要进行同步。这在JVM1.2 ...
ZhangChuang 评论(0) 有646人浏览 2011-02-18 10:09

最近博客热门TAG

Java(141747) C(73651) C++(68608) SQL(64571) C#(59609) XML(59133) HTML(59043) JavaScript(54918) .net(54785) Web(54513) 工作(54116) Linux(50906) Oracle(49876) 应用服务器(43288) Spring(40812) 编程(39454) Windows(39381) JSP(37542) MySQL(37268) 数据结构(36423)

博客人气排行榜

    博客电子书下载排行

      >>浏览更多下载

      相关资讯

      相关讨论

      Global site tag (gtag.js) - Google Analytics