经典进程的同步问题-生产者与消费者
来源:互联网 发布:淘宝优惠券去哪里领 编辑:程序博客网 时间:2024/05/19 18:16
在说到进程的同步的问题上,毫无疑问,生产者与消费者这个经典问题是不可避免的。
生产者生产的前提是:生产者生产出来的产品容器还能够装下,否则等待消费者消费;
消费者消费的前提是:容器中有产品能够让消费者消费,否则等待生产者生产;
public class Test {public static void main(String[] args){Store s=new Store(); Productor p1=new Productor(s);Customers c1=new Customers (s); Thread s1=new Thread(p1,"生产者1");Thread s2=new Thread(p1,"生产者2");Thread s3=new Thread(p1,"生产者3");Thread s4=new Thread(p1,"生产者4");Thread s5=new Thread(c1,"消费者1");Thread s6=new Thread(c1,"消费者2");Thread s7=new Thread(c1,"消费者3");s1.start();s2.start();s3.start();s4.start();s5.start();s6.start();s7.start();}}生产者类:
public class Productor implements Runnable { Store s; public Productor(Store s){ this.s=s; }@Overridepublic void run() { while(true) s.SetGoods();}}消费者类:
public class Customers implements Runnable{ Store s; public Customers(Store s){ this.s=s; }@Overridepublic void run() {while(true)s.GetGoods();}}存储的仓库类:
public class Store { //容器中可以存放的最大的产品的数目 int max=50; //容器中某一时刻的产品数 int nowGood=0; public synchronized void SetGoods(){ if(nowGood<max){ try { Thread.sleep(50);} catch (InterruptedException e) { e.printStackTrace();} nowGood= nowGood+1; System.out.println(Thread.currentThread().getName()+"生产了第"+nowGood+"个产品"); } } public synchronized void GetGoods(){ if(nowGood>0){ try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+"消费了第"+nowGood+"个产品"); nowGood= nowGood-1; } }}
这里应该注意就是加锁的时候一定要在while循环的里面。
0 0
- 经典进程同步问题-生产者与消费者
- 经典进程的同步问题-生产者与消费者
- 经典进程同步问题-生产者消费者问题
- 【操作系统总结】经典的进程同步问题-生产者消费者问题
- 经典进程问题:生产者与消费者
- 经典进程同步问题 生产者——消费者问题
- 操作系统:经典进程同步问题(1)生产者-消费者问题
- 进程同步-生产者消费者问题
- 进程同步-生产者消费者问题
- 进程同步互斥经典题之消费者与生产者问题
- 经典同步问题(一)---生产者与消费者问题
- Java经典线程同步问题------生产者与消费者
- Java经典线程同步问题------生产者与消费者
- 经典生产者与消费者问题(线程的同步与互斥)
- 多线程间的同步-经典的生产者与消费者代码
- [Java] Thread-05- 线程同步-生产者与消费者的经典问题
- 经典线程同步问题(生产者&消费者)
- java同步经典问题生产者消费者
- mysql中limit 和in
- 3990 G. I guess the gift is a bag! II
- Helvetic Coding Contest 2016 C2. Brain Network (medium)
- Shiro权限说明
- Codeforces 429B Working out (dp 数字三角形变形)
- 经典进程的同步问题-生产者与消费者
- 在 Web 项目中应用 Apache Shiro
- SCAU Individual Contest #1 (未更新完)
- Ubuntu下为Firefox安装Adobe Flash Player
- 使用achartengine 画图表时属性设置
- 3991 H. Eat or Study
- Android开发——Retrofit2.0 工具类
- Java 学习笔记(0x01) 数据类型转换
- A - The Suspects