volatile:java关键字,意为易变的,不稳定的,标识修饰java同步字段,示例:java单利模式public
class ApplicationCache{ private Map attributeMap; // volatile so that JVM
out-of-order...
分类:
编程语言 时间:
2014-05-19 14:56:56
阅读次数:
334
今天脑筋有点搭牢,想了半天才看出为什么以下两段代码效果是相同的。。。第一种好处是可以直接批量复制黏贴system.out, 不用改什么东西 private
static long i; private volatile static long vt; private static final int...
分类:
其他好文 时间:
2014-05-16 00:43:28
阅读次数:
387
Java 语言设计中的一大创新就是:第一个把跨平台线程模型和锁模型应用到语言中去,Java
语言包括了跨线程的关键字synchronized和volatile,使用关键字和java类库就能够简单的实现线程间的同步。在简化与平台无关的并发程序开发时,它没有使并发程序的编写工作变得繁琐,反而使它变得更容...
分类:
编程语言 时间:
2014-05-15 16:33:22
阅读次数:
460
上篇通过一个简单的例子说明了线程安全与不安全,在例子中不安全的情况下输出的结果恰好是逐个递增的(其实是巧合,多运行几次,会产生不同的输出结果),为什么会产生这样的结果呢,因为建立的Count对象是线程共享的,一个线程改变了其成员变量num值,下一个线程正巧读到了修改后的num,所以会递增输出。
要说明线程同步问题首先要说明Java线程的两个特性,可见性和有序性。多个线程之间是...
分类:
编程语言 时间:
2014-05-15 12:15:49
阅读次数:
355
#define DEFINE(sym, val)
asm volatile("\n->" #sym " %0 " #val : : "i" (val))
那个宏定义在asm-offsets.c中,这个.c文件根本就不是用来编译运行的,只是在编译内核的时候,用它生成一个asm-offsets.s文件,然后使用一个脚本将这个asm-offsets.s再转换为asm-offset...
分类:
其他好文 时间:
2014-05-14 00:16:28
阅读次数:
425
volatile 影响编译器编译的结果,指出,volatile
变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++
在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。例如:volatile ...
分类:
其他好文 时间:
2014-05-11 23:27:27
阅读次数:
404
一 问题引入
JVM把内存分为两层,一层为大的主存,另外一个是工作内存(属于每个线程自己专属的),正常情况下,线程在用到某个变量的值时,都是先取到工作内存中进行处理,然后再写回主存,这样就会带来不同线程变量值不同步的问题。
volatile字面意思是易挥发,不稳定,比如100个线程同时访问修改的一个字段值,那么这种值的特性明显和JVM中高速缓存机制不相符,这种值是不适合放在各线程自己的寄存...
分类:
编程语言 时间:
2014-05-09 21:07:01
阅读次数:
324
volatile的使用场景:多个线程同时访问一个变量,CLR为了效率,允许每个线程进行本地缓存,这就导致了变量的不一致性。volatile就是为了解决这个问题,volatile修饰的变量,不允许线程进行本地缓存,每个线程的读写都是直接操作在共享内存上,这就保证了变量始终具有一致性。缺点很明显:牺牲了...
分类:
其他好文 时间:
2014-05-09 03:19:04
阅读次数:
256
Volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到主内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入...
分类:
编程语言 时间:
2014-05-07 13:08:37
阅读次数:
312
1、const、mutable与volatile的区别:const表明内存被初始化以后,程序将不能对它进行修改。volatile则表明,即使程序代码没有对内存单元进行修改,但是里面的值也可能会发生变化。例如:将一个指针指向某个硬件位置,其中包含了来自串行端口的时间和信息,在某些情况下,硬件而不是程序...
分类:
编程语言 时间:
2014-05-06 23:53:29
阅读次数:
518