黑马程序员技术交流社区

标题: 问两个反射问题,在线求指点 [打印本页]

作者: liushuaishuai    时间: 2015-8-11 19:43
标题: 问两个反射问题,在线求指点
01./*@线程间通信

02. *@有两个动作:一个存一个取。对同一资源进行操作,比如银行。

03. */

04.

05.class Vault {

06.        String name;

07.        String sex;

08.}

09.

10.class Input implements Runnable// 录入信息

11.{

12.        private Vault r;

13.

14.        Input(Vault r)// 初始化

15.        {

16.                this.r = r;

17.        }

18.

19.        public void run() {

20.                int flag = 0;// 标志

21.                while (true) {

22.                        if (flag == 0) {

23.                                synchronized (Vault.class) {//加一个锁

24.

25.                                        r.name = "张三";

26.                                        r.sex = "男";

27.                                }

28.                        } else {

29.                                synchronized (Vault.class) {

30.                                        r.name = "lisa";

31.                                        r.sex = "woman";

32.                                }

33.                        }

34.                        flag = (flag + 1) % 2; // 1或者0之间循环

35.                }

36.        }

37.}

38.

39.class Output implements Runnable {// 输出信息

40.

41.        private Vault r;

42.

43.        Output(Vault r)// 初始化

44.        {

45.                this.r = r;

46.        }

47.

48.        public void run() {

49.                while (true)// 打印

50.                {

51.                        synchronized (Vault.class) {//加一个锁,注意要和输入锁是同一个锁

52.                                System.out.println(r.name + "--------" + r.sex);

53.                        }

54.                }

55.        }

56.}
复制代码




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2