Foodie02.java 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package J20250731.demo01_cooker_foodie;
  2. /**
  3. * @author WanJl
  4. * @version 1.0
  5. * @title Foodie02
  6. * @description
  7. * @create 2025/7/31
  8. */
  9. public class Foodie02 implements Runnable{
  10. /**
  11. * 1.判断是否有包子,决定当前线程是否执行
  12. * 2.如果没有包子,就进入等待状态,如果有包子,就消费包子
  13. * 3.消费包子后,更新桌子上包子状态,唤醒生产者生产包子
  14. */
  15. @Override
  16. public void run() {
  17. while (true){
  18. synchronized (Desk.lock){
  19. if (Desk.count>0){
  20. //消费...
  21. System.out.println("消费者"+Thread.currentThread().getName()+"正在吃....包子...");
  22. Desk.flag=false;
  23. Desk.lock.notifyAll();
  24. Desk.count--;
  25. System.out.println("消费后包子还剩:"+Desk.count);
  26. }else {
  27. try {
  28. Desk.lock.wait();
  29. } catch (InterruptedException e) {
  30. e.printStackTrace();
  31. }
  32. }
  33. }
  34. }
  35. }
  36. }