您的位置:首页 > 其它

Volatile的前世今生

2016-05-03 22:33 211 查看
在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。

在JAVA5之前虽然Volatile不允许volatile变量之间重排序,但是却允许volatile和不同变量重排序,这就导致了很多出人意料结果。而java5之后volatile变量和不同变量之间也不允许重排序才使得,各种意料结果得到解决。如下图在java5之前使用Volatile会导致错误

class test

{

int a = 0;

volatile boolean flag = false;

线程:A

public void writer()

{

a = 1;      // 1

flag = true;    // 2

}

线程:B

public void reader()

{

if (flag)
// 3

{   
 

int i = a;   // 4

……

}

}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: