加synchronized关键字之后,执行结果还是不确定
package jmm;
/**
* Created by WangLong on 2017-05-28.
*/
public class SynchronizedDemo {
//共享变量
private boolean ready=false;
private int result=0;
private int number=1;
/**
* 写操作
*/
public synchronized void write(){
ready=true;
number=2;
}
/**
* 读操作
*/
public synchronized void read(){
if(ready){
result=number*3;
}
System.out.println("result的值为:"+result);
}
/**
* 内部线程类
*/
private class ReadWriteThread extends Thread{
private boolean flag;
public ReadWriteThread(boolean flag){
this.flag=flag;
}
public void run(){
if(flag){
write(); //构造方法中传入true,执行写操作
}else{
read(); //构造方法中传入false,执行读操作
}
}
}
public static void main(String[] args) {
SynchronizedDemo demo=new SynchronizedDemo();
demo.new ReadWriteThread(true).start(); //启动线程执行写操作
/*try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}*/
demo.new ReadWriteThread(false).start(); //启动线程执行读操作
}
}/**
代码如上:仅仅加入synchronized关键字之后,执行结果还是不确定啊?
*/