学习异步开发-简单实现缓冲区代码
来源:互联网 发布:红蚂蚁网络与阿里巴巴 编辑:程序博客网 时间:2024/05/29 19:56
import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class BoundBuffer {final Lock lock = new ReentrantLock();final Condition notFull = lock.newCondition();final Condition notEmpty = lock.newCondition();int p = -1;final Object[] items = new Object[100];public void put(Object o) throws InterruptedException {//获得锁lock.lock();try {while (p == items.length - 1) {//数据满了阻塞notFull.await();}items[++p] = o;//加入数据notEmpty.notify();//唤醒take} finally {lock.unlock();//释放锁}}public Object take() throws InterruptedException {lock.lock();try {while (p == -1) {notEmpty.await();}return items[p--];} finally {lock.unlock();}}}
0 0
- 学习异步开发-简单实现缓冲区代码
- 简单的双缓冲区实现
- 简单实现异步下载
- 一个简单的环形缓冲区的实现
- C++ 环形缓冲区RingBuffer 简单实现
- 异步之生产者消费者模型--同步缓冲区的实现
- EasyRTMP实现RTMP异步直播推送之环形缓冲区设计
- NIO学习系列:缓冲区内部实现机制
- NIO学习系列:缓冲区内部实现机制
- android NDk开发学习一<简单实现>
- 同步异步实现代码小结
- ListenableFuture异步多线程代码实现
- 一份简单的代码演示缓冲区溢出的危害
- 一个简单高效的循环缓冲区的管理代码
- iOS GCD 同步异步的区别 Swift 代码的简单实现
- E3 TREE 开发准备及简单树实现代码。
- Ajax异步开发学习笔记
- node.js实战学习笔记01--异步开发简单的聊天服务器
- nsinteger 和int
- Hadoop学习之MapReduce(四)
- 静态成员变量初始化问题。关于 error LNK2005 static int:已经在***.obj中定义
- UIActivtyViewController
- delphi 对象与类类型
- 学习异步开发-简单实现缓冲区代码
- PLSQL之DBMS_SQL程序包使用2
- typedef struct
- 控件时出现“未能实例化控件******,VS2008 中无法使用ACTIVEX控件的解决
- 图论500道
- 开始努力的自己(番外)视频剪辑
- php对象与数组的区别,类与对象的联系
- <strong>和<b>的区别
- Android sqlite本地数据库