1 package com.yzy; 2 3 /** 4 * Synchronized功能说明类 5 * 6 * @author yinzhiyuan 7 * 8 */ 9 public class SynchronizedDemo { 10 // 共享变量 11 private boolean ready = false; 12 private int number = 1; 13 private int result = 0; 14 15 /** 16 * 写操作 17 */ 18 public void write() { 19 ready = true; 20 number = 2; 21 } 22 23 /** 24 * 读操作 25 */ 26 public void read() { 27 if (ready) { 28 result = number * 3; 29 } 30 System.out.println("result的结果:" + result); 31 } 32 33 /** 34 * 内部线程类 35 * 36 * @author yinzhiyuan 37 * 38 */ 39 private class ReadAndWriteThread extends Thread { 40 private boolean flag; 41 42 // 根据构造方法传入的flag参数来确定线程执行读操作还是写操作 43 public ReadAndWriteThread(boolean flag) { 44 this.flag = flag; 45 } 46 47 @Override 48 public void run() { 49 // 如果传入参数flag为true 50 if (flag) { 51 //执行写操作 52 write(); 53 } 54 // 如果传入参数flag为false 55 else { 56 //执行读操作 57 read(); 58 } 59 } 60 } 61 62 /** 63 * 在主线程中启动线程执行读、写操作 64 * 65 * @param args 66 */ 67 public static void main(String[] args) { 68 SynchronizedDemo synDemo = new SynchronizedDemo(); 69 // 启动线程执行写操作 70 synDemo.new ReadAndWriteThread(true).start(); 71 // 启动线程执行读操作 72 synDemo.new ReadAndWriteThread(false).start(); 73 74 } 75 76 }