ReentrantLock方式实现生产者-消费者模式
来源:互联网 发布:磐石 网络投票 价格 编辑:程序博客网 时间:2024/06/05 06:00
生产者与消费者类:
public class MyService { private ReentrantLock lock = new ReentrantLock(); private Condition condition = lock.newCondition(); private boolean hasValue = false; public void set(){ try { lock.lock(); while (hasValue == true){ condition.await(); } System.out.println("________"); hasValue = true; condition.signal(); }catch (InterruptedException e){ e.printStackTrace(); } } public void get(){ try{ lock.lock(); while (hasValue == false){ condition.await(); } System.out.println("+++++++"); hasValue = false; condition.signal(); }catch (InterruptedException e){ e.printStackTrace(); } }}
生产者线程:
public class MyThreadA extends Thread{ private MyService myService; public MyThreadA(MyService myService){ super(); this.myService = myService; } @Override public void run(){ for (int i = 0 ; i < Integer.MAX_VALUE ; i++){ myService.set(); } }}
消费者线程:
public class MyThreadA extends Thread{ private MyService myService; public MyThreadA(MyService myService){ super(); this.myService = myService; } @Override public void run(){ for (int i = 0 ; i < Integer.MAX_VALUE ; i++){ myService.set(); } }}
启动类:
public class Run { public static void main(String[] args) { MyService myService = new MyService(); MyThreadA a = new MyThreadA(myService); a.start(); MyThreadB b = new MyThreadB(myService); b.start(); }}
运行结果:
+++++++________+++++++________+++++++________+++++++________+++++++________+++++++________
0 0
- ReentrantLock方式实现生产者-消费者模式
- 使用ReentrantLock实现生产者消费者模式
- java多线程--ReentrantLock实现生产者与消费者模式
- synchronized方式实现生产者-消费者模式
- 生产者/消费者模式Java实现方式
- 生产者消费者模式,并发采用ReentrantLock
- synchronized和ReentrantLock实现消费者生产者问题
- 生产者消费者模式实现
- 生产者消费者模式实现
- 实现生产者-消费者模式
- 生产者消费者模式实现
- 4.1.7ReentrantLock实现生产者消费者模式(1对1)
- 4.1.8ReentrantLock实现生产者消费者模式(多对多)
- 生产者-消费者模式 系列 之二 ReentrantLock, Condition 篇
- LinkedBlockingQueue实现生产者-消费者模式
- Java生产者消费者模式实现
- 生产者消费者模式Java实现
- NSCondition实现生产者消费者模式
- C++_C++中attribute详解
- 简单讲两句-卷积神经网络- convolutional nets
- mysql--mark一下最近用的sql
- VS2010使用技巧
- eCharts展示node.js提供的大盘数据-加入买卖点连线
- ReentrantLock方式实现生产者-消费者模式
- 按钮绑定回车事件
- log4j.properties 详细配置
- 平方探测法的证明《数据结构与算法分析(C语言描述)第二版》P119
- unity3d 疑难杂症之 TypeLoadException:Could no load type YnityEditor.ios.iosBuildPostprocessor
- java中的缓存机制(1)--使用Ehcache
- SSL 1463——公共子串
- POI导入导出excel表
- Android Studio 布局无法预览,显示为空白的一个原因