Java多线程同步——生产者消费者问题
来源:互联网 发布:遇到网络诈骗怎么半 编辑:程序博客网 时间:2024/06/04 18:34
这是马士兵老师的Java视频教程里的一个生产者消费者问题的模型
- public class ProduceConsumer{
- public static void main(String[] args){
- SyncStack ss = new SyncStack();
- Producer pro = new Producer(ss);
- Consumer con = new Consumer(ss);
- new Thread(pro).start();
- new Thread(con).start();
- }
- }
- class Product{
- int id;
- public Product(int id){
- this.id = id;
- }
- public String toString(){
- return "Product:" + id;
- }
- }
- class SyncStack{
- int index = 0;
- Product[] arrPro = new Product[6];
- public synchronized void push(Product p){
- while (index == arrPro.length){
- try {
- this.wait();
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- this.notify();
- arrPro[index] = p;
- index++;
- }
- public synchronized Product pop(){
- while (index == 0){
- try {
- this.wait();
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- this.notify();
- index--;
- return arrPro[index];
- }
- }
- class Producer implements Runnable{
- SyncStack ss = null;
- public Producer(SyncStack ss){ //持有SyncStack的一个引用
- this.ss = ss;
- }
- @Override
- public void run() {
- for(int i=0; i<20; i++){
- Product p = new Product(i);
- ss.push(p);
- System.out.println("生产了:" + p);
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- }
- class Consumer implements Runnable{
- SyncStack ss = null;
- public Consumer(SyncStack ss){ //持有SyncStack的一个引用
- this.ss = ss;
- }
- @Override
- public void run() {
- for(int i=0; i<20; i++){
- Product p = ss.pop();
- System.out.println("消费了:" + p);
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- }
0 0
- Java多线程同步——生产者消费者问题
- Java多线程同步——生产者消费者问题
- java多线程同步:生产者与消费者问题
- Java多线程—生产者-消费者问题
- 【java 多线程】多线程并发同步问题及生产者、消费者问题
- java生产者消费者多线程同步
- java生产者消费者同步问题
- java实现 生产者和消费者问题 多线程同步示例
- Java中的生产者消费者问题(多线程间同步通信)
- 继续java多线程——生产者消费者类似问题
- java多线程 生产者消费者问题
- java多线程 生产者 消费者 问题 。。。
- Java 多线程:生产者消费者问题
- Java多线程生产者消费者问题
- 多线程——生产者/消费者问题
- java多线程实现生产者/消费者同步
- Java多线程同步:生产者与消费者
- java多线程——生产者、消费者
- 2、从头学Android之第一个Activity程序
- Android相关网站
- 简单的哈希表实现
- RMAN备份详解
- android 控件 按钮(Button)
- Java多线程同步——生产者消费者问题
- 异常例2
- MYSQL入门学习之十四:游标的基本操作
- 简要分析哪些因素会直接影响汽车产业发生变化
- weblogic.xml 精妙设置
- jetty源码剖析
- c语言记录--关于验证时间的正确性
- Android framework系统默认设置修改
- linux 下android unknow 验证是可行的 注意配置的时候用的是在sudo 下