首页 > 代码库 > dsa

dsa

 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 }

 

dsa