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