阻塞双端消息队列 BlockingDeque(先进先出的原则管理)
昨晚为了赶项目,干到两点钟,不过也有收获,来自华为的大神,在我们公司做后台,教了我一招好用的消息队列管理方法,分享给大家了。
既是一个队列的生产者又是这个队列的消费者的时候可以使用到 BlockingDeque。
看图我们之后秒懂了吧,当我们需要把数据发送的对方时,又想有规律均速一条一条的发送,我们就可以这么干了。
直接上菜啦:
1. 现在onCreate中启动消息处理器
new HandleMess().start();
2 获得BlockingDeque对象
BlockingDeque<byte[]> queueBlockingDeque = new LinkedBlockingDeque<byte[]>();
3.现在所有的数据都添加到BlockingDepue对象中。以先进先出的原则管理消息队列
public void sendMessage(final byte[] message) {queueBlockingDeque.addLast(message);}
4.通过BlockingDeque对象,以先进先出的原则来管理消息的发送
private class HandleMess extends Thread {@Overridepublic void run() {while (true) {try {//获得要发送的消息,每次获取一条(重点)byte[] message = queueBlockingDeque.poll();if (message == null) {Thread.sleep(500);continue;}// 检查是否有东西送if (message.length > 0 ) { mLockService.write(message);//发送 Thread.sleep(800); } else {Thread.sleep(1000);continue;} }} catch (Exception e) {Log.e("wrh", "发送消息异常", e);}}}}
阻塞双端消息队列 BlockingDeque(先进先出的原则管理)相关推荐
- 2021 - 9 -下旬 数据结构- 线性表 -双端循环队列 - java实现
//循环双端队列:Circle Double Ended Queue //本质是对动态数组的优化 //队头队尾都可以添加或删除元素 //相比于普通循环队列需要注意的点是在队头插入元素时的对front前 ...
- redisTemplate阻塞式处理消息队列
用redis中的List可以实现队列,这样可以用来做消息处理和任务调度的队列 文章目录 Redis 消息队列 redis五种数据结构 队列生产者 队列消费者 测试类 并发情况下使用increment递 ...
- Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存
Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存 参考:<linux编程从入门到精通>,<Linux C程序设计大全>,<unix环境高级编程> ...
- 进程间通信的几种方式:管道、信号、消息队列、共享内存
一.管道 单向,一段输入,另一端输出,先进先出FIFO.管道也是文件.管道大小4096字节. 特点:管道满时,写阻塞:空时,读阻塞. 分类:普通管道(仅父子进程间通信)位于内存:命名管道位于文件系统, ...
- springboot利用redis作为消息队列mq使用
先吐个槽:经常看到有人对不同得消息队列做各种各样得评价以及所谓得性能测试,评估选型等等,岂不知脱离任何业务得技术评估都是瞎扯淡.(公司实际业务技术场景不提,满口胡说kafa怎么样,activemq怎么 ...
- JDK1.8源码分析:阻塞队列LinkedBlockingQueue与BlockingDeque(双端)的设计与实现
概述 BlockingQueue:阻塞FIFO队列,在接口设计层面,对于从队列尾部添加元素,从队列头部获取并删除元素的方法,在队列满时添加元素或者队列空时获取元素,则提供了四个版本:分别是:抛异常,直 ...
- linux进程间通信:消息队列实现双端通信
双端通信描述 利用消息队列针对发送接受消息的类型唯一性 进行多个客户端之间消息传递,而不需要server端进行消息转发. 同时消息队列的读阻塞和写阻塞特性(消息队列中已经写入数据,如果再不读出来,则无 ...
- 《恋上数据结构第1季》队列、双端队列、循环队列、循环双端队列
队列(Queue) 队列 Queue 队列的接口设计 队列源码 双端队列 Deque 双端队列接口设计 双端队列源码 循环队列 Circle Queue 循环队列实现 索引映射封装 循环队列 – %运 ...
- acwing 3548.双端队列
acwing 3548.双端队列 链接:https://www.acwing.com/problem/content/3551/ 题目描述 给定一个双端空队列,有两种插入和一种读取操作 插入:向左端或 ...
最新文章
- MYSQL数据库字母数字混合字段排序问题
- 【计算机网络】传输层 : TCP 拥塞控制 ( 慢开始 | 拥塞避免 | 快重传 | 快恢复 )
- WebRTC各种资料集合
- mysql 双缓冲_Mysql一些好的优化建议(二)
- 【设计模式】三言两语 设计模式
- oracle 拷贝文件到asm,Oracle 从ASM复制文件到文件系统
- PC远程调试移动设备
- Opera Android将支持HTML5和Flash功能
- msf后渗透之获取登入password、远程控制、调用摄像头
- Vivado下载 安装 与 和谐教程
- python数据转换成pdf_用python把ipynb文件转换成pdf文件过程详解
- 如何操作最快的硬盘对拷工具
- Unity开发者的C#内存管理
- 从一个html页面传值到另一个页面,两个html之间的值传递(js location.search用法)
- slf4j将日志写到单独的文件
- 推荐系统三十六式(刑无刀)学习笔记(四)
- 【转知乎】异地恋如何维持之电子本科生
- 一个自学前端的4年工作总结【三十而立,拒绝躺平】
- 威联通ts-532x 篇五 qnap5.0 搭建服务器
- C整数除法(不使用乘、除、取余)