4.1.7ReentrantLock实现生产者消费者模式(1对1)
来源:互联网 发布:如何做好淘宝详情页 编辑:程序博客网 时间:2024/06/10 23:01
package demo;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;/** * Created by sunyifeng on 17/10/18. */public class MyService { private ReentrantLock lock = new ReentrantLock(); private Condition condition = lock.newCondition(); private boolean flag = false; public void set(){ try { lock.lock(); while (flag == true) { condition.await(); } System.out.println("------"); flag = true; condition.signal(); } catch (InterruptedException e) { e.printStackTrace(); } finally { lock.unlock(); } } public void get(){ try { lock.lock(); while (flag == false) { condition.await(); } System.out.println("++++++"); flag = false; condition.signal(); } catch (InterruptedException e) { e.printStackTrace(); }finally { lock.unlock(); } }}
package demo;/** * Created by sunyifeng on 17/10/18. */public class ThreadA extends Thread { private MyService myService; public ThreadA(MyService myService) { super(); this.myService = myService; } @Override public void run() { super.run(); for (int i = 0; i < Integer.MAX_VALUE; i++) { myService.set(); } }}
package demo;/** * Created by sunyifeng on 17/10/18. */public class ThreadB extends Thread { private MyService myService; public ThreadB(MyService myService) { super(); this.myService = myService; } @Override public void run() { super.run(); for (int i = 0; i < Integer.MAX_VALUE; i++) { myService.get(); } }}
package demo;/** * Created by sunyifeng on 17/10/18. */public class Run { public static void main(String[] args) { MyService myService = new MyService(); ThreadA threadA = new ThreadA(myService); threadA.start(); ThreadB threadB = new ThreadB(myService); threadB.start(); }}
运行结果:。。。。。。
------
++++++
------
++++++
------
++++++
------
程序分析:
无。
阅读全文
0 0
- 4.1.7ReentrantLock实现生产者消费者模式(1对1)
- 4.1.8ReentrantLock实现生产者消费者模式(多对多)
- ReentrantLock方式实现生产者-消费者模式
- 使用ReentrantLock实现生产者消费者模式
- 生产者消费者模式(1)
- java多线程--ReentrantLock实现生产者与消费者模式
- 生产者消费者模式,并发采用ReentrantLock
- synchronized和ReentrantLock实现消费者生产者问题
- 多线程-生产者消费者模式(1)
- 生产者消费者模式实现
- 生产者消费者模式实现
- 实现生产者-消费者模式
- 生产者消费者模式实现
- 生产者/消费者模式1:概述
- 生产者-消费者模式(阻塞队列实现)
- 消费者-生产者模式(线程的实现)
- 生产者-消费者模式 系列 之二 ReentrantLock, Condition 篇
- LinkedBlockingQueue实现生产者-消费者模式
- Java数据库之防SQL注入和自定义线程池
- cocos2dx3.0进度条的简析
- html5 canvas在图片上画超链接
- 人际关系
- Mr.Smile填坑记——Kotlin中使用VasSonic时,WebResourceResponse类型转换异常
- 4.1.7ReentrantLock实现生产者消费者模式(1对1)
- 设计模式的原则
- 理解 Python 中的 *args 和 **kwargs
- hive2.1.1 部署安装
- UICollectionView的简单使用
- HTML5 使用video标签实现选择摄像头功能
- Linux 中进程的定义以及查看
- Oracle索引(Index)创建使用
- JavaScript中实现快速xml转json