今天遇到一个 ThreadPoolExecutor 队列 问题。
需求如下:
1:处于成本和人员技术水平限制,不可能采用高大上的系统。
2:项目周期短。
3:队列必须顺序取出,同时过滤掉超时数据。
4:多个系统。
实现原理:
1:public class CameraRequestQueue implements BlockingQueue<Runnable> ;
继承BlockingQueue<Runnable> ;
2:public class RedisCameraRequestQueue extends CameraRequestQueue
继承CameraRequestQueue ;
3:实现 如下方法:
@Override
public int size() {
return Redis List Queue Size ;
}
@Override
public boolean isEmpty() {
return Redis List Queue isEmpty();
}
// 获取并移除此队列的头部,在元素变得可用之前一直等待(如果有必要)。
@Override
public ExRunnable take() throws InterruptedException {
CameraRequestBean msg = Redis List Queue .take();
if (msg == null) {
return null;
} else {
ExRunnable iExRunnable = new ExRunnable(msg, cameraRequestHandFactory);
iExRunnable.setPublicMediaService(publicMediaService);
return iExRunnable;
}
}
@Override
public int remainingCapacity() {
return Integer.MAX_VALUE;
}
3:线程池:
ThreadPoolExecutor executor = new ThreadPoolExecutor(initCount, MAX_SIZE, 5, TimeUnit.MILLISECONDS,redisCameraRequestQueue, new CameraRequestHandThreadFactory(),
new ThreadPoolExecutor.AbortPolicy());
4:初始化:
executor.prestartAllCoreThreads();
5:public class ExRunnable implements Runnable 。
//具体实现处理数据的方法实现。
这时:当有其他系统有数据插入到对应的redis list queue 时,本方法,可以自动从redis list queue 中取出数据。
1:优点:方便,代码简介,一般的开发人员都能实现。
2:不足:
1:此方法暂时不能保证重要性数据的正确执行。
2:在关闭线程池的时候,可能会掉数据。
3:本方法还没在redis lits queue 集群里面测试过。(因没有多余的服务器来搭建系统)。
4:ThreadPoolExecutor 本身有线程不停的从 redis list queue 取出数据,可能会有一些性能损耗。
本人:使用场景:
1:2000多个摄像头排队调用,如果调用方调用失败可以重新排队调用。
2:发送UDP数据。
以下是关键代码。redis 插入数据。这里就不提供了。
相关推荐
scratch少儿编程逻辑思维游戏源码-米克 demo.zip
scratch少儿编程逻辑思维游戏源码-萝卜男孩拯救世界.zip
scratch少儿编程逻辑思维游戏源码-酷忍者.zip
教育科技_微信小程序_二手交易平台_大学校园二手书与物品循环利用公益系统_风华读书人校园二手交易平台_基于C2C模式的校内闲置物品交易系统_支持多校区独立运营的二手书交易平台_包含
全新UI彩虹外链网盘系统源码前后端美化模板整站 模版文件.zip
maoxig_nonebot-plugin-ai-timetable_32152_1745865455265
少儿编程scratch项目源代码文件案例素材-足球顶尖高手.zip
少儿编程scratch项目源代码文件案例素材-作战基地.zip
少儿编程scratch项目源代码文件案例素材-云端之上 1-4名玩家.zip
scratch少儿编程逻辑思维游戏源码-魔幻之塔.zip
scratch少儿编程逻辑思维游戏源码-楼层酷跑.zip
scratch少儿编程逻辑思维游戏源码-圈.zip
少儿编程scratch项目源代码文件案例素材-纸片马里奥自定义战役.zip
少儿编程scratch项目源代码文件案例素材-自由下落.zip
少儿编程scratch项目源代码文件案例素材-阻击蜈蚣.zip
健康监测与疾病预防_脉搏波分析_六轴加速度传感器_生理参数融合_STC12硬件采集_Android数据处理_SpringBoot后端_MySQL数据库_MatlabPython实验
音乐流媒体应用开发_基于JetpackCompose的跨平台开发_网易云音乐风格的多终端音乐播放器_包含手机平板电视手表四端适配的现代化音乐播放应用实现音乐发现播放列表管理个性化推
移动应用开发_Android_Kotlin_Jetpack_开源框架_课程表应用_学生管理_教育信息化_云舒课表_智能课表_课表提醒_成绩查询_主题定制_背景更换_自动静音_校园生
嵌入式系统开发_JavaScript运行时_Lvgl图形库绑定_基于Mooncake框架的智能手表UI开发平台_支持HAL硬件抽象层API调用_提供过渡动画特效_用于构建可穿戴设备