https://www.imooc.com/video/6775














package mkw.demo.syn;public class SynchronizedDemo {//共享变量private boolean ready = false;private int result = 0;private int number = 1;//写操作public void write(){ready = true; //1.1number = 2; //1.2}//读操作public void read(){if(ready){ //2.1result = number*3; //2.2}System.out.println("result的值为:" + result);}//内部线程类private class ReadWriteThread extends Thread {//根据构造方法中传入的flag参数,确定线程执行读操作还是写操作private boolean flag;public ReadWriteThread(boolean flag){this.flag = flag;}@Overridepublic void run() {if(flag){//构造方法中传入true,执行写操作write();}else{//构造方法中传入false,执行读操作read();}}}public static void main(String[] args) {SynchronizedDemo synDemo = new SynchronizedDemo();//启动线程执行写操作synDemo .new ReadWriteThread(true).start();try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}//启动线程执行读操作synDemo.new ReadWriteThread(false).start();}}













class Singleton{private volatile static Singleton instance = null;private Singleton() {}public static Singleton getInstance() {if(instance==null) {synchronized (Singleton.class) {if(instance==null)instance = new Singleton();}}return instance;}}

