这篇直接贴代码了

package cn.javaBase.study_thread1;class Source {public static int num = 0; //假设这是馒头的数量
}class Producer implements Runnable {private Object obj;public Producer(Object obj) {this.obj = obj;}@Overridepublic void run() {synchronized (obj) {while (true) {if (Source.num >= 6) { //馒头的数量>=6个的时候,就停下来不生产了,通知别人来消费
                    obj.notify();System.out.println("满了,消费吧");try {obj.wait();} catch (InterruptedException e) {e.printStackTrace();}}Source.num++;System.out.println("已经生产了:"+ Source.num + "个");}}}
}class Consumer implements Runnable{private Object obj;public Consumer(Object obj) {this.obj = obj;}@Overridepublic void run() {synchronized (obj) {while (true) {if (Source.num == 0) {  //馒头的数量==0个的时候,就停下不消费了,通知别人该生产了
                    obj.notify();System.out.println("没了,生产吧。");try {obj.wait();} catch (InterruptedException e) {e.printStackTrace();}}Source.num--;System.out.println("剩下了:"+ Source.num + "个");}}}
}public class MyProducerConsumer {public static void main(String[] args) throws InterruptedException {Object a = new Object();Producer p = new Producer(a);Consumer c = new Consumer(a);new Thread(p).start();Thread.sleep(200);  //为了保证先生产,再消费, 不用也可以new Thread(c).start();}
}

因为思想跟上一篇的Java多线程之wait和notify:http://www.cnblogs.com/WNof11020520/p/8780875.html

讲的差不多,所以在这里就不累赘了。

转载于:https://www.cnblogs.com/WNof11020520/p/8794047.html

java多线程之wait和notify协作,生产者和消费者相关推荐

  1. java多线程之wait和notify

    多线程中的通信是非常重要的概念,线程直接实现通信就可以并发完成很多复杂工作. java在Object类中就设计了wait()和notify()两个方法,以解决这个问题. 1.释义: wait()方法将 ...

  2. (JAVA)多线程之wait()与notify()

    /*** @author Alina* @date 2021年12月22日 12:17 上午**/ class Student{String name;String sex;boolean flag ...

  3. JAVA多线程之wait/notify

    本文主要学习JAVA多线程中的 wait()方法 与 notify()/notifyAll()方法的用法. ①wait() 与 notify/notifyAll 方法必须在同步代码块中使用 ②wait ...

  4. Java多线程之Synchronized和Lock的区别

    Java多线程之Synchronized和Lock的区别 目录: 原始构成 使用方法 等待是否可以中断 加锁是否公平 锁绑定多个条件Condition 小结:Lock相比较Synchronized的优 ...

  5. Java多线程之Callable、Future和FutureTask

    Java多线程之Callable接口 自己想总结一下的,看到一篇总结的更好的博客,就转载了,突然感觉真轻松,哈哈哈哈 文章转载于:Matrix海子:Java并发编程:Callable.Future和F ...

  6. Java多线程之CAS缺点

    Java多线程之CAS缺点 目录: 循环时间开销很大 只能保证一个共享变量的原子操作 引来ABA问题及解决方案(重点) 1. 循环时间开销很大 通过看源码,我们发现有个do while,如果CAS失败 ...

  7. Java多线程之CAS深入解析

    Java多线程之CAS深入解析 目录: CAS是什么 CAS底层原理Unsafe深入解析 CAS缺点 引子:蚂蚁花呗一面:讲一讲AtomicInteger,为什么要用CAS而不是synchronize ...

  8. Java多线程之volatile详解

    Java多线程之volatile详解 目录: 什么是volatile? JMM内存模型之可见性 volatile三大特性之一:保证可见性 volatile三大特性之二:不保证原子性 volatile三 ...

  9. Java多线程之Semaphore用法

    Java多线程之Semaphore用法 本文目录: Semaphore基本概念 Semaphore使用案例:3个停车位,6辆车去抢,走一辆,抢一个停车位. 1. Semaphore基本概念 在信号量上 ...

最新文章

  1. 5G+AI:影响未来的新趋势
  2. html自定义实现文本编辑器,自定义开发富文本编辑器(Javascript实现点击插入内容到textarea光标处)...
  3. Cracking the coding interview--Q1.7
  4. SpringMVC系列(二): SpringMVC各个注解的使用
  5. 复制模式和扩展模式_扩展剂:模式还是反模式?
  6. 信息学奥赛一本通 2052:【例3.2】范围判断
  7. 实验四+040+薛龚
  8. vs2012 vc++控制台程序 配置成64位
  9. 大V诞生记 —— 谁是VMware?
  10. JAVA常见算法题(四)
  11. GPU架构变迁之AI系统视角:从费米到安培
  12. TWaver可视化软件(一)初识三维可视化软件
  13. mongovue 导入mysql_MongoVUE简单操作手册
  14. tomcat 官网下载
  15. dedecms 自定义表单html,dedecms自定义表单和自定义表单如何用自己模板教程
  16. forEach、for…in、 for…of 的区别
  17. 移动100m宽带慢的要死_家里拉了100M的宽带,为什么网速还是那么慢?
  18. sol文件解析AS2.0——小游戏上古神器2存档通过Python解析
  19. 【Skill】从 WPS 步入Office 365
  20. Revit数据处理(三)

热门文章

  1. 2021-09-18牛客SQL32,SQL33,SQL35,SQL36,SQL37,SQL38,SQL40
  2. 如何精简持仓基金数量?
  3. 属羊的人2021年冲太岁运势预测
  4. 教你如何判断水泥的质量好坏?
  5. 营业执照吊销后,股权何去何从?
  6. 职场上,领导更愿意提拔什么样的下属?
  7. 任正非认为自己的成功没有秘诀
  8. 你用苹果手机多长时间清理一次内存,怎么清理?
  9. 华为手机芯片断供,有没有可能回收旧手机解决目前困境?
  10. 有向无环图描述表达式