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 }