Java模拟生产消费问题
2013-02-20 15:08
411 查看
生产者代码
消费者代码
仓库代码
测试类
package com.cvicse.thread.product_consumer; public class Producter extends Thread{ private ShareData shareData; public Producter(ShareData shareData){ this.shareData = shareData; } @Override public void run() { for (char c = 'A'; c <= 'D'; c++) { try { Thread.sleep((long)(Math.random()*1000)); } catch (InterruptedException e) { e.printStackTrace(); } shareData.putShareChar(c); System.out.println(c + " is produced by Producer. "); } } }
消费者代码
package com.cvicse.thread.product_consumer; public class Consumer extends Thread{ private ShareData shareData; public Consumer(ShareData shareData){ this.shareData = shareData; } @Override public void run() { char ch; do{ try{ Thread.sleep((long)(Math.random()*1000)); }catch(InterruptedException e){ e.printStackTrace(); } // 从仓库中取出产品 ch = shareData.getShareChar(); System.out.println(ch + " is consumed by Consumer. "); }while (ch != 'D'); } }
仓库代码
package com.cvicse.thread.product_consumer; public class ShareData { private char c; private boolean signal = false; public synchronized void putShareChar(char c){ while (signal) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.c = c; this.signal = true; notify(); } public synchronized char getShareChar(){ while (!signal) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.signal = false; notify(); return this.c; } }
测试类
package com.cvicse.thread.product_consumer; public class MainTest { public static void main(String[] args) { ShareData shareData = new ShareData(); Thread producter = new Producter(shareData); Thread consumer = new Consumer(shareData); producter.start(); consumer.start(); } }
相关文章推荐
- Java 多线程间通信 多生产 多消费问题
- JAVA进阶6.8——生产消费问题
- 使用Lock与ReentrantLock模拟消息队列阻塞,生产与消费问题模拟
- Java并发(八)生产消费问题&虚假唤醒
- AutoResetEvent来模拟实现生产消费问题
- java中多线程模拟(多生产,多消费,Lock实现同步锁,替代synchronized同步代码块)
- java信号量解决生产消费问题
- 【Java】----线程同步:生产-消费问题
- java多线程之生产消费问题
- Java多线程的单生产单消费和多生产多消费问题的解决
- java学习9:生产和消费问题,先生产才能消费,线程间通信与等待
- Java中多线程的多生产多消费问题的解决方案
- Java 线程同步 生产消费问题
- 经典的生产与消费线程同步问题
- JAVA多线程-线程池-实例模拟上厕所问题
- 【JAVA】wait和notify用法,附生产/消费模型
- java线程之生产与消费
- Java多线程模拟售票程序,及线程安全问题
- java中的线程同步问题 模拟出售火车票
- Java多线程系列--“基础篇”11之 生产消费者问题