A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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.}
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马