Java_多线程下的生产者与消费者实现
来源:互联网 发布:工厂仿真软件 编辑:程序博客网 时间:2024/05/16 16:16
import java.util.*;import java.text.*;import static java.lang.System.*;import static java.lang.Math.*;import java.util.concurrent.locks.*;class ProducerConsumerDemo2{public static void main(String[] args) {//System.out.println("Hello World!");Resourse r=new Resourse();Producer pro=new Producer(r);Consumer con=new Consumer(r);Thread t1=new Thread (pro);Thread t2=new Thread (pro);Thread t3=new Thread (con);Thread t4=new Thread (con);t1.start();t2.start();t3.start();t4.start();}}class Resourse{private String name;private int count=1;private boolean flag=false;private Lock lock=new ReentrantLock();//新版本 private Condition condition_pro=lock.newCondition();//新版本private Condition condition_con=lock.newCondition();//新版本public void set(String name)throws InterruptedException{lock.lock();try{while(flag)condition_pro.await();//新版(抛出异常)this.name=name+""+count++;System.out.println(Thread.currentThread().getName()+"生产者+++"+this.name);flag=true;condition_con.signal();}finally{lock.unlock();}}public void out()throws InterruptedException {lock.lock();try{while(!flag)condition_con.await();System.out.println(Thread.currentThread().getName()+"消费者---"+this.name);flag=false;condition_pro.signal();}finally{lock.unlock();}}}class Producer implements Runnable{private Resourse res;Producer(Resourse res){this.res=res;}public void run(){while(true){try{res.set("商品");}catch (InterruptedException e){}}}}class Consumer implements Runnable{private Resourse res;Consumer(Resourse res){this.res=res;}public void run(){while(true){try{res.out();}catch (InterruptedException e){}}}}
0 0
- Java_多线程下的生产者与消费者实现
- java_多线程_生产者与消费者(并发协作)
- Linux下实现多线程的生产者消费者问题
- linux下多线程生产者消费者实现的一个示例
- 用多线程实现生产者与消费者的原理
- 多线程下如何实现生产者消费者模型
- Boost多线程实现生产者与消费者问题
- 多线程实现生产者与消费者模式
- java多线程实现生产者与消费者
- Python中的生产者与消费者 实现多线程
- 生产者-消费者多线程实现
- 多线程实现生产者消费者
- 多线程实现生产者消费者
- 多线程实现生产者消费者
- 多线程---生产者与消费者
- 多线程(生产者与消费者)
- 多线程 生产者与消费者
- Java多线程下的生产者消费者模式
- 变更svn密码或者用户名
- 在windows上部署使用Redis
- mondrian+Jpviot页面报错
- 如何只授予用户查看存储过程定义的权限
- JAVA的初始化顺序
- Java_多线程下的生产者与消费者实现
- Matlab矩阵的产生
- 处理不平衡数据的八大策略
- 【C#基础】反射
- java中继承父类后this和super的区别
- 36. BOM (2)
- python 的Dict
- android如何使用bks和apache服务器进行https通信
- Matlab矩阵的运算