- /*@线程间通信
- *@有两个动作:一个存一个取。对同一资源进行操作,比如银行。
- */
- class Vault {
- String name;
- String sex;
- }
- class Input implements Runnable// 录入信息
- {
- private Vault r;
- Input(Vault r)// 初始化
- {
- this.r = r;
- }
- public void run() {
- int flag = 0;// 标志
- while (true) {
- if (flag == 0) {
- synchronized (Vault.class) {//加一个锁
- r.name = "张三";
- r.sex = "男";
- }
- } else {
- synchronized (Vault.class) {
- r.name = "lisa";
- r.sex = "woman";
- }
- }
- flag = (flag + 1) % 2; // 1或者0之间循环
- }
- }
- }
- class Output implements Runnable {// 输出信息
- private Vault r;
- Output(Vault r)// 初始化
- {
- this.r = r;
- }
- public void run() {
- while (true)// 打印
- {
- synchronized (Vault.class) {//加一个锁,注意要和输入锁是同一个锁
- System.out.println(r.name + "--------" + r.sex);
- }
- }
- }
- }
复制代码
|
|