转载关于java内存模型的系列文章,写的非常好。 深入理解java内存模型(一)——基础 深入理解java内存模型(二)——重排序 深入理解java内存模型(三)——顺序一致性 深入理解java内存模型(四)——volatile 深入理解java内存模型(五)——锁 深入理解java内存模型(六)—...
分类:
编程语言 时间:
2015-08-20 12:42:07
阅读次数:
127
出处:http://blog.csdn.net/fanaticism1/article/details/9966163#1、锁提供了两种主要特性:互斥(mutual exclusion)和可见性(visibility)。互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访...
分类:
编程语言 时间:
2015-08-20 12:14:59
阅读次数:
111
A secret service developed a new kind of explosive that attain its volatile property only when a specicassociation of products occurs. Each product i...
分类:
其他好文 时间:
2015-08-19 20:06:48
阅读次数:
223
1.volatile: 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址(内存)中读取,而不会使用寄存器中的缓存值;volatile int i=10; 2.register: 使用修饰符register声明的变量属于寄存器存储类型。该类型与自动存储类型相似,具有自动存储时期、代码块作用域和内连接。声明为register仅仅是一个请求,因此该变量仍然可能是普通的自动变量。无论哪种情况...
分类:
编程语言 时间:
2015-08-19 17:03:00
阅读次数:
174
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。...
分类:
其他好文 时间:
2015-08-19 13:39:48
阅读次数:
127
概述
Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量是线程共享的,存在竞争问题的。
Java内存模型规定了所有的变量都存储在主内存,每条线程还有自己的工作内存中保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作(读取、赋值等),都必须在工作内存中进行,而不能直接读写主内存中的变量。...
分类:
编程语言 时间:
2015-08-18 10:20:36
阅读次数:
212
Thread.stop方法,虽然它确实停止了一个正在运行的线程,然而,这种方法是不安全也是不受提倡的,不应该使用stop方法来关闭Java的线程。 正确的方法应该是设置volatile boolean stop = false;,这样所有线程可以及时发现stop值的变化,线程运行的过程中周期性...
分类:
编程语言 时间:
2015-08-18 01:03:49
阅读次数:
232
各种不同的情况保证数据的正确性,完整性。public class TestMultiThread implements Runnable { private static int i; private static volatile Integer vi = 0; private ...
分类:
编程语言 时间:
2015-08-17 17:06:00
阅读次数:
99
unsigned char 是无符号字符型
volatile 易变,易失的
volatile unsigned char i;
意思是定义一个无符号字符型的变量 i。
这个变量存放在内存中,要用的时候需要从内存中取出。
一般的逻辑是“准备用变量----去对应的内存地址取变量----用变量”,而现在编译器编介入后,就把i 的值放在R寄存器里,每次从R寄存器里取值,而不从内存取值...
分类:
其他好文 时间:
2015-08-17 15:39:54
阅读次数:
126
1、register
在函数内定义变量时,默认是 auto 类型,变量存储在内存中,当程序用到该变量时,由控制器发出指令将内存中该变量的值送到运算器,计算结束后再从运算器将数据送到内存。如果一个变量用 register 关键字修饰,编译器则尽可能将该变量存放在CPU的内部寄存器中,这样就不用通过内存寻址来访问变量,可以大大提高访问效率。
2、volatile
volatile关键字修饰的变量...
分类:
编程语言 时间:
2015-08-17 08:49:05
阅读次数:
130