基于java多线程来实现生产者和消费者的实例
2013-03-21 21:51
671 查看
声明:本实例是在网上看到,做了很小的修改。所以感谢之前的作者。只是一时忘了哪儿看到,没法加入链接,向原作者道歉,以示尊重。抱歉-^)...
同步栈:
生产者和消费者:
主程序:
That's all. thank you ...
同步栈:
class SycnStack { private Integer index = 0; private char[] data; public SycnStack(int num) { data = new char[num]; } public void push(char c) { synchronized (this) {// 对index加锁为何不行???必须this while (index == data.length ) { System.out.println(index +" 池子已满,不能放入!" + Thread.currentThread().toString()); try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.notify();// 获取锁 data[index] = c; System.out.println(index +" 放入" + c + " " + Thread.currentThread().toString()); index++; } } public Character pop() { synchronized (this) { while (index == 0) { System.out.println(index +" 池子已空,取不了了!" + Thread.currentThread().toString()); try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.notify(); index--; char c = data[index]; System.out.println(index +" 取出" + c + " " + Thread.currentThread().toString()); return c; } } }
生产者和消费者:
class Producer implements Runnable { private SycnStack stack; public Producer(SycnStack stack) { this.stack = stack; } public void run() { int i = 10; while (i-- > 0) { stack.push((char) (26 * Math.random() + 'A')); Thread.yield(); } } } class Consumer implements Runnable { private SycnStack stack; public Consumer(SycnStack stack) { this.stack = stack; } public void run() { int i = 10; while (i-- > 0) { stack.pop(); Thread.yield(); } } }
主程序:
public class ProductorConsumer { public static void main(String[] args) { SycnStack s = new SycnStack(5); new Thread(new Producer(s)).start(); new Thread(new Consumer(s)).start(); } }
That's all. thank you ...
相关文章推荐
- Java Note: 多线程的同步(互斥锁)的方法对比,信号量锁,读写锁的实现,生产者-消费者模式的实现
- Java多线程——使用wait/notify实现生产者/消费者模式
- LinuxC/C++编程基础(8) 基于条件变量实现生产者与消费者的实例
- java多线程,这样的生产者消费者实现会有什么问题呢?
- java 多线程,生产者消费者实现。适合多个生产者消费者线程;打印线程编号便于查看正确性
- Java多线程-工具篇-BlockingQueue(实现生产者和消费者模式)
- Java多线程学习之 BlockingQueue实现生产者和消费者模型
- java之多线程实例 生产者与消费者
- Java多线程生产者消费者调度实现
- Java Note: 多线程的同步(互斥锁)的方法对比,信号量锁,读写锁的实现,生产者-消费者模式的实现
- 从Java多线程实现“生产者-消费者”模型来谈谈操作系统中线程状态的转换
- java多线程实现生产者与消费者
- java中多线程通信实例:生产者消费者模式
- JAVA多线程实例(生产者与消费者问题)
- java 用多线程实现多生产者和多消费者模式
- Java多线程生产者消费者实例
- 基于Java自带同步机制实现生产者-消费者模式
- Java多线程 - 实现生产者与消费者模式
- JAVA多线程-线程间通信(二)-生产者/消费者模式实现
- 生产者消费者Java多线程实现