java多线程之wait和notify协作,生产者和消费者
这篇直接贴代码了
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协作,生产者和消费者相关推荐
- java多线程之wait和notify
多线程中的通信是非常重要的概念,线程直接实现通信就可以并发完成很多复杂工作. java在Object类中就设计了wait()和notify()两个方法,以解决这个问题. 1.释义: wait()方法将 ...
- (JAVA)多线程之wait()与notify()
/*** @author Alina* @date 2021年12月22日 12:17 上午**/ class Student{String name;String sex;boolean flag ...
- JAVA多线程之wait/notify
本文主要学习JAVA多线程中的 wait()方法 与 notify()/notifyAll()方法的用法. ①wait() 与 notify/notifyAll 方法必须在同步代码块中使用 ②wait ...
- Java多线程之Synchronized和Lock的区别
Java多线程之Synchronized和Lock的区别 目录: 原始构成 使用方法 等待是否可以中断 加锁是否公平 锁绑定多个条件Condition 小结:Lock相比较Synchronized的优 ...
- Java多线程之Callable、Future和FutureTask
Java多线程之Callable接口 自己想总结一下的,看到一篇总结的更好的博客,就转载了,突然感觉真轻松,哈哈哈哈 文章转载于:Matrix海子:Java并发编程:Callable.Future和F ...
- Java多线程之CAS缺点
Java多线程之CAS缺点 目录: 循环时间开销很大 只能保证一个共享变量的原子操作 引来ABA问题及解决方案(重点) 1. 循环时间开销很大 通过看源码,我们发现有个do while,如果CAS失败 ...
- Java多线程之CAS深入解析
Java多线程之CAS深入解析 目录: CAS是什么 CAS底层原理Unsafe深入解析 CAS缺点 引子:蚂蚁花呗一面:讲一讲AtomicInteger,为什么要用CAS而不是synchronize ...
- Java多线程之volatile详解
Java多线程之volatile详解 目录: 什么是volatile? JMM内存模型之可见性 volatile三大特性之一:保证可见性 volatile三大特性之二:不保证原子性 volatile三 ...
- Java多线程之Semaphore用法
Java多线程之Semaphore用法 本文目录: Semaphore基本概念 Semaphore使用案例:3个停车位,6辆车去抢,走一辆,抢一个停车位. 1. Semaphore基本概念 在信号量上 ...
最新文章
- 5G+AI:影响未来的新趋势
- html自定义实现文本编辑器,自定义开发富文本编辑器(Javascript实现点击插入内容到textarea光标处)...
- Cracking the coding interview--Q1.7
- SpringMVC系列(二): SpringMVC各个注解的使用
- 复制模式和扩展模式_扩展剂:模式还是反模式?
- 信息学奥赛一本通 2052:【例3.2】范围判断
- 实验四+040+薛龚
- vs2012 vc++控制台程序 配置成64位
- 大V诞生记 —— 谁是VMware?
- JAVA常见算法题(四)
- GPU架构变迁之AI系统视角:从费米到安培
- TWaver可视化软件(一)初识三维可视化软件
- mongovue 导入mysql_MongoVUE简单操作手册
- tomcat 官网下载
- dedecms 自定义表单html,dedecms自定义表单和自定义表单如何用自己模板教程
- forEach、for…in、 for…of 的区别
- 移动100m宽带慢的要死_家里拉了100M的宽带,为什么网速还是那么慢?
- sol文件解析AS2.0——小游戏上古神器2存档通过Python解析
- 【Skill】从 WPS 步入Office 365
- Revit数据处理(三)