Caption_1210
2017-05-28 20:26
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关键字之后,执行结果还是不确定啊?
*/
调用的时候用线程调用,否则和普通方法调用一样
应该加上synchronized(this),而不是为方法加synchronized
细说Java多线程之内存可见性
55899 学习 · 88 问题
相似问题