使用BlockingQueue创建生产者消费者模式
2015-12-28 17:39
507 查看
使用BlockingQueue创建生产者消费者模式
import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.atomic.AtomicInteger; import org.springframework.stereotype.Component; import cn.data.entity.DataDO; /** * 生产者消费者操作队列类 FIFO * @author zhengyong */ @Component public class DataBlockingQueue { // 最大队列数 public static final Integer MAX_QUEUE_COUNT = 10000 * 50; // 声明队列 private BlockingQueue<DataDO> queue = new LinkedBlockingQueue<DataDO>(MAX_QUEUE_COUNT); // 统计已经消费数据数目 private AtomicInteger takeCount = new AtomicInteger(0); // 统计发送失败数据数目 private AtomicInteger faildCount = new AtomicInteger(0); /** * 添加数据进队列 * @param blackListDO * @throws InterruptedException */ public void putQueue(DataDO blackListDO) throws InterruptedException{ queue.put(blackListDO); } /** * 消费队列数据 * @return * @throws InterruptedException */ public DataDO takeQueue() throws InterruptedException{ DataDO blackListDO = queue.take(); this.takeCount.incrementAndGet(); return blackListDO; } /** * 获取队列 * @return */ public BlockingQueue<DataDO> getQueue(){ return queue; } /** * 获取已经取出队列的记录数 * @return */ public Integer getTakeCount(){ return takeCount.intValue(); } /** * 消费失败数增加1 * @return */ public void incrementFaildCount(){ this.faildCount.incrementAndGet(); } /** * 获取失败数 * @return */ public Integer getFaildCount(){ return faildCount.intValue(); } }
相关文章推荐
- UI - UITableView 编辑 、TableViewController
- NSOperationQueue 队列
- Android酷炫实用的开源框架(UI框架)
- [leetcode] 225. Implement Stack using Queues 解题报告
- ios UISearchDisplayController 实现 UITableView 搜索功能
- 创建队列 NSOperationQueue dispatch队列组
- iOS页面之间跳转隐藏UITabbar
- request.getRequestDispatcher()的两个方法forward()/include()!!!
- Burp Suite使用介绍——准备工作
- 解决小米手机出现INSTALL_FAILED_UID_CHANGE错误,安装应用失败的问题
- response.setCharacter和request.setCharacterEncoding详解
- Get Jenkins job build queue length
- Get Jenkins job build queue length
- Win10 Mobile下一个预览版或是11088 Build 11088或会包含多项新功能
- IOS-47-动态改变UIView高度最简单的方法
- 安装win7或win8系统时UEFI和Legacy模式的设置
- C# break,continue,return
- iOS通过URL构建UIImage
- EasyUI写的登录界面
- UIImagePicker与UIAlertController组合使用 上传图片