public class VolatileTest {
public static void main(String[] args) {
MyThread mt = new MyThread();
new Thread(mt).start();
while(true){
if(mt.isFlag()){
System.out.println("------");
break;
}
}
}
}
class MyThread implements Runnable{
private volatile boolean flag = false;
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
@Override
public void run() {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
flag = true;
System.out.println("flag = "+isFlag());
}
}
main(){
int i =10; //1
int j =20; //2
int flag = true; //3
int temp = i * j ;//4
}class MyExample(){
private boolean flag = false;
int i =5;
int j =5;
read(){
i =10; //1
j = 20; //2
flag = true; //3
}
write(){
while(flag){
int temp = i * j;
}
}
}
所谓的原子性操作的含义是指该操作是不可分割的,比如我们通常写的 i = 0; int i = i++;
在底层是由三步组成
int temp = i;
temp = temp + 1;
int i = temp;
沙发沙发
厉害厉害
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |