代码:

1.老板类:

package com.lanyue.day26;

public class bossRunnable implements Runnable {

    public myLock lock;

    public void setLock(myLock lock){

        this.lock = lock;
} @Override
public void run() { while(true){ synchronized (lock){ try {
Thread.sleep(1500);
} catch (InterruptedException e) {
System.out.println("系统故障");
} if(lock.flag()){ System.out.println("老板:小刘给我倒杯水去");
System.out.println("老板:小张给我整理一下资料"); lock.notifyAll();
}
}
}
}
}

2.员工一类:

package com.lanyue.day26;

public class customerOneRunnable implements Runnable {

    private myLock lock;

    @Override
public void run() { while (true){ synchronized (lock){ if(lock.flag % 2 == 0){ System.out.println("小刘:老板,我有什么可以帮助你的吗?");
lock.flagTime++; try {
lock.wait();
} catch (InterruptedException e) {
System.out.println("系统出现故障");
} System.out.println("小刘:好的老板。");
lock.flag++;
}
}
}
} public void setLock(myLock lock){ this.lock = lock;
}
}

3.员工二类:

package com.lanyue.day26;

public class customerTwoRunnable implements Runnable {

    public myLock lock;

    public void setLock(myLock lock){

        this.lock = lock;
} @Override
public void run() { while(true){ synchronized(lock){ if(lock.flag % 2 == 0){ System.out.println("小张:老板,请问有什么吩咐");
lock.flagTime++; try {
lock.wait();
} catch (InterruptedException e) {
System.out.println("系统出现故障");
} System.out.println("小张:已经准备好了");
lock.flag++;
}
}
}
} }

4.控制锁类:

package com.lanyue.day26;

public class myLock {

    public String name;
public int flag = 0;
public int flagTime = 0; public void setName(String name){ this.name = name;
} public boolean flag(){ if(flagTime == 2){ flagTime = 0;
return true; }else{ return false;
}
}
}

执行代码:

package com.lanyue.day26;

public class TestDemo {

    public static void main(String[] args) {

        bossRunnable boss = new bossRunnable();
customerOneRunnable cusOne = new customerOneRunnable();
customerTwoRunnable cusTwo = new customerTwoRunnable(); myLock lock = new myLock();
lock.setName("同步锁");
boss.setLock(lock);
cusOne.setLock(lock);
cusTwo.setLock(lock); Thread one = new Thread(boss);
Thread two = new Thread(cusOne);
Thread three = new Thread(cusTwo); one.start();
two.start();
three.start();
}
}

最新文章

  1. bzoj1045 糖果传递
  2. JavaScript学习笔记- 省市级联效果
  3. iOS多线程GCD
  4. Salesforce 生成测试可用 Id
  5. PAAS平台的web应用性能测试与分析
  6. 阿里巴巴Double分布式服务框架
  7. hdu 2077
  8. Android应用开发学习笔记之菜单
  9. mysql 交叉表
  10. [RxJS] Logging a Stream with do()
  11. oracle tablespace
  12. BZOJ 1834: [ZJOI2010]network 网络扩容(最大流+最小费用最大流)
  13. Python每日一练(2):找出html中的所有链接(Xpath、正则两个版本)
  14. 用Verilog实现IIC通讯
  15. [SDOI2010]地精部落
  16. C++Primer学习——动态内存
  17. Struts2知识点学习笔记
  18. 03-Python入门学习-Python基础
  19. Python 和 Scikit-Learn
  20. MDX Cookbook 04 - 在集合中实现 NOT IN 逻辑 (Minus, Except, Filter 等符号和函数的使用)

热门文章

  1. WEB应用之http协议和httpd闲聊
  2. 把 GitHub 放入口袋,“开箱”官方客户端
  3. node 微信支付
  4. Linux与unix shell编程指南
  5. 分布式——吞吐量巨强、Hbase的承载者 LSMT
  6. 数据结构和算法:Python实现二分查找(Binary_search)
  7. 【开发工具 docker】值得学习的应用容器引擎docker安装
  8. Django-jwt token生成源码分析
  9. django缓存和跨域解决和短信验证码的使用
  10. hdu1908 逆序对