用生产者和消费者模式实现奇数偶数不同线程交替输出
要求
使用生产者和消费者模式实现,交替输出:
假设只有两个线程,输出以下结果:t1-->1t2-->2t1-->3t2-->4t1-->5t2-->6....要求:必须交替,并且t1线程负责输出奇数。t2线程负责输出偶数。两个线程共享一个数字,每个线程执行时都要对这个数字进行:++
代码
public class Test {public static void main(String[] args) {Num num = new Num(1);Thread t0 = new Thread(new OddNumber(num));t0.setName("奇数");Thread t1 = new Thread(new EvenNumber(num));t1.setName("偶数");t0.start();t1.start();}
}
public class OddNumber implements Runnable{private Num number;public OddNumber(Num number) {this.number = number;}public OddNumber() {}@Overridepublic void run() {while (true){synchronized (number){if (number.i % 2 != 0){System.out.println(Thread.currentThread().getName() + "--->" + number.i++);}else{number.notify();try {number.wait();} catch (InterruptedException e) {e.printStackTrace();}}}try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}
}
public class EvenNumber implements Runnable{private Num number;public EvenNumber(Num number) {this.number = number;}public EvenNumber() {}@Overridepublic void run() {while (true){synchronized (number){if (number.i % 2 == 0){System.out.println(Thread.currentThread().getName() + "--->" + number.i++);}else{number.notify();try {number.wait();} catch (InterruptedException e) {e.printStackTrace();}}}try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}
}
public class Num {int i;public Num(int i){this.i = i;}
}
用生产者和消费者模式实现奇数偶数不同线程交替输出相关推荐
- Java基础进阶多线程-生产者和消费者模式
1.什么是"生产者和消费者模式"? 生产线程负责生产,消费线程负责消费 生产线程和消费线程要达到均衡 这是一种特殊的业务需求,在这种特殊的情况下需要使用wait方法和notify方 ...
- Python中的生产者与消费者模式(转载)
利用多线程和队列可以实现生产者消费者模式.该模式通过平衡生产线程和消费线程的工作能力来提高程序整体处理数据的速度. 1.什么是生产者和消费者? 在线程世界里,生产者就是生产数据(或者说发布任务)的线程 ...
- 生产者、消费者模式实现
1.1生产和1消费 一个String对象,生产者设定值,消费者拿走值. wait()/notify()实现 生产者 public class Product {private String lock; ...
- Java多线模式-Producer-Consumer模式(生产者、消费者模式)
1.场景 有些时候需要两个或两个以上的线程协同工作,每个线程需要使用其他线程产生数据. 2.详细说明 可以把上面的场景抽象成生产者和消费者模式.从消费者的角度:消费者需要消费生产者生成的产品. 从生产 ...
- 多线程通信—生产者和消费者模式
1.队列Queue: 从一个线程向另一个线程发送数据最安全的方式可能就是使用queue库中的队列了.创建一个被多个线程共享的Queue对象,这些线程通过使用put()和get()操作来向队列中添加或者 ...
- python 生产者和消费者模式_Python爬虫:生产者和消费者模式
认识生产者和消费者模式 生产者和消费者是多线程中很常见的一个问题.产生数据的模块,我们称之为生产者,而处理数据的模块,就称为消费者.但是单单只有生产者和消费者显然还是不够的,一般来说,我们还有一个缓冲 ...
- python 多线程并发编程(生产者、消费者模式),边读图像,边处理图像,处理完后保存图像实现提高处理效率
文章目录 需求 实现 先导入本次需要用到的包 一些辅助函数 如下函数是得到指定后缀的文件 如下的函数一个是读图像,一个是把RGB转成BGR 下面是主要的几个处理函数 在上面几个函数构建对应的处理函数 ...
- 线程间的协作(2)——生产者与消费者模式
2019独角兽企业重金招聘Python工程师标准>>> 1.何为生产者与消费者 在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程. import java.util. ...
- Java学习笔记—生产者和消费者模式
一.生产者和消费者问题 生产者消费者模式是一个十分经典的多线程协作的模式. 生产者和消费者问题包含了两类线程:一类是生产者线程用于生产数据, 一类是消费者数据用于消费数据. /*生产者消费者案例 包含 ...
最新文章
- cpu满了卡住 linux_Linux系统中CPU占用率较高问题排查思路与解决方法
- 小程序离成功还差一个版本
- Angularjs 设置全局变量的3种方法
- C语言入门经典题目及其答案
- 判断是否包含大写字符_Python最常用的数据类型中字符串基础函数使用知识点讲解...
- For input string:
- python学习模型_python学习笔记(IO模型)
- 【可收藏】3W字,Docker 从入门到精通
- UI库——muse-ui
- 怎么领支付宝大红包?技术方面有这三大考量!
- C语言红楼梦人物分析系统
- pip的安装,更新,卸载模块以及使用方法 python
- vim + vundle + YCM+自动格式化
- ie浏览器怎么打开html,win10ie浏览器不能打开html设置怎么办
- 关键词文章自动生成的四大要点
- 正在保存“index.vue”: 从 “‘Vetur‘, ‘ESLint‘“ (configure)中获取代码操作。
- unity3d求一个向量的垂直方向
- 对于PTA exercise 3-3 Write a function expand(s1,s2) 问题的一种解法与思考
- 药品初级包装标签-市场现状及未来发展趋势
- JSHint 与 JSLint 的区别
热门文章
- Peoplesoft取Translate Value标签值的方法
- JCG新年献礼,JHR-N825R给力上市
- 【摘录】《程序设计导引及在线实践》之排列
- web developer tips (45):如何改变动态数据文件夹的位置
- ASP.NET 2.0中使用自定义provider (2)
- 手把手教你用Python实现查找算法
- 国资委发文!10本书讲透数字化时代新机遇
- 开关电源之PCB安规设计规范
- 正式宣战关系型数据库市场,华为宣布开源一款人工智能数据库
- error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js