ScheduledExecutorService的坑

news2024/10/6 12:31:28

参考文献

调度服务 ScheduledExecutorService 经常卡顿问题的排查及解决方法-腾讯云开发者社区-腾讯云

场景

        一个安顿广播程序使用的ScheduledExecutorService来定时执行任务,当有一个任务出现异常后就会卡住,不会继续执行后续的任务。

解决方案

查找定时运行的代码,捕获异常,当遇到错误时不影响后续任务执行。

/**
 * 样例代码
*/
private final ScheduledExecutorService es = Executors.newScheduledThreadPool(1);

public void execute(AndonCallService andonCallService) {
        //10ms执行一次
        es.scheduleWithFixedDelay(() -> {
            andonCallService.andonCall();
        }, 0, 100, TimeUnit.MILLISECONDS);
    }

查看上面样例中使用的scheduleWithFixedDelay方法

源码注释中有这么一句:If any execution of the task encounters an exception, subsequent executions are suppressed.

翻译过来的意思就是:如果任务的任何执行遇到异常,则会抑制后续执行。

所以如果样例代码中andonCallService.andonCall();抛出任何异常就会导致任务卡住。

优化后代码

/**
 * 样例代码
*/
private final ScheduledExecutorService es = Executors.newScheduledThreadPool(1);

public void execute(AndonCallService andonCallService) {
        //10ms执行一次
        es.scheduleWithFixedDelay(() -> {
            try{//新增异常处理
                andonCallService.andonCall();
            }catch (Exception e){
                log.error("执行调度任务发生异常,忽略此任务:{}", e.getMessage());
            }
        }, 0, 100, TimeUnit.MILLISECONDS);
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1066258.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

完美解决 flex 实现一行三个,显示多行,左对齐

效果图 代码 <body><section class"content"><div class"item">元素</div><div class"item">元素</div><div class"item">元素</div><div class"item">元素</di…

121-宏免杀

CS生成宏&上线 生成宏 1.cs生成宏&#xff0c;如下图操作 2.点击复制宏代码&#xff0c;保存下来 cs上线 注&#xff1a;如下操作使用的是word&#xff0c;同样的操作也适用于Excel 1.新建一个word文档&#xff0c;使用word打开。点击文件—— 2.更多——选项—— 3.自定义…

如何自学(黑客)网络安全技术————(详细分析学习思路)方法

前言 前几天发布了一篇 网络安全&#xff08;黑客&#xff09;自学 没想到收到了许多人的私信想要学习网安黑客技术&#xff01;却不知道从哪里开始学起&#xff01;怎么学&#xff1f;如何学&#xff1f; 今天给大家分享一下&#xff0c;很多人上来就说想学习黑客&#xff0c…

电脑PC端有哪些好用的记笔记工具

在日常学习中&#xff0c;想要学好每一门学科&#xff0c;必定离不开使用笔记软件记录&#xff0c;如何高效记录学习笔记呢&#xff1f;电脑PC端记录学习笔记用哪一款工具比较好呢&#xff1f;今天给大家推荐一款功能比较齐全的多平台记笔记工具——敬业签。 学生们通常不仅在…

抖捧自动直播市场火热,实体行业如何实现高效开播?

在AI数字人热度之后&#xff0c;最近抖捧场景自动直播开始火遍全网&#xff0c;因为操作简单成本极低&#xff0c;只需要一部手机放在店里&#xff0c;就可以高效开播&#xff0c;深受广大实体行业老板的认可&#xff0c;那么抖捧实景自动直播的方式&#xff0c;具体是怎么实现…

亘古难题——前端开发or后端开发

一、引言 前端开发 前端开发是创建WEB页面或APP等前端界面呈现给用户的过程&#xff0c;通过HTML&#xff0c;CSS及JavaScript以及衍生出来的各种技术、框架、解决方案&#xff0c;来实现互联网产品的用户界面交互。 前端开发从网页制作演变而来&#xff0c;名称上有很明显的时…

【单调栈】下一个更大元素 II

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;单调栈循环数组 写在最后 Tag 【单调栈循环数组】【数组】 题目来源 503. 下一个更大元素 II 题目解读 在循环数组中找下一个更大的元素。循环数组指的是&#xff0c;数组的最后一个元素的下一个元素是数组首元素。 …

Windows 10 没有【休眠】选项的配置操作

目录 一、相关知识 1.1、名词解释 二、睡眠/休眠选项 三、睡眠/休眠配置 3.1 打开休眠配置 3.2 打开休眠功能 一、相关知识 1.1、名词解释 睡眠&#xff1a; 当Windows系统进入睡眠模式之后&#xff0c;将电脑当前的内存中的运行状态和数据存储在硬盘中&#xff0…

关于丢失msvcp71.dll的5个解决办法,msvcp71.dll丢失原因分析

计算机已经成为我们生活和工作中不可或缺的一部分&#xff0c;在使用计算机的过程中&#xff0c;我们经常遇到各种软件或应用程序崩溃的情况。其中&#xff0c;一个常见的错误提示是“MSVCP71.dll丢失”。这个错误通常出现在运行使用Visual C Redistributable for Visual Studi…

基于Springboot实现旧物置换网站平台演示【项目源码+论文说明】分享

基于Springboot实现旧物置换网站平台演示 摘要 随着时代在一步一步在进步&#xff0c;旧物也成人们的烦恼&#xff0c;许多平台网站都在推广自已的产品像天猫、咸鱼、京东。所以开发出一套关于旧物置换网站成为必需。旧物置换网站主要是借助计算机&#xff0c;通过对用户进行管…

Tauri | 新版2.0路线图:更强大的插件以及支持 iOS、Android 应用构建

Tauri官方在9月7号发布了新版2.0的路线图&#xff0c;该版本主要是对移动端进行升级&#xff0c;主要特性如下&#xff1a; 强大的插件系统&#xff0c;官方把常用的功能进行了插件化&#xff08;见下图&#xff09;支持使用 Swift、Kotlin 编程语言开发插件&#xff0c;对 iO…

CSP-J第二轮试题-2019年-1、2题

文章目录 参考&#xff1a;总结 [CSP-J2019] 数字游戏题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示答案答案2 [CSP-J 2019] 公交换乘题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示…

【@胡锡进】大模型量化分析- 福耀玻璃 600660.SH

SARIMA模型: import pandas as pd import numpy as np from statsmodels.tsa.statespace.sarimax import SARIMAX# 将日期转换为datetime格式 data[date] pd.to_datetime(data[date], format%Y%m%d)# 创建SARIMA模型 model SARIMAX(data[close], order(1, 0, 0), seasonal_o…

智慧空调插座:智控生活好伴侣,节能降耗好帮手

所谓“智能插座”&#xff0c;就是在普通插座上增加Wi-Fi模块&#xff0c;通过手机APP控制单个或整个插座的电源通断&#xff0c;并统计一段时间的用电量。 目前市面上所销售的智能插座&#xff0c;大多具备可连接Wi-Fi网路功能&#xff0c;如此一 来便不需要额外再购买定时控…

聊聊MySQL面试常问名词回表、索引覆盖,最左匹配

文章目录 1. 前言2. 回表操作 Index Lookup2.1 什么是回表2.2 回表的成本2.3 如何避免回表 3. 索引覆盖 Covering Index3.1 什么是索引覆盖3.2 索引覆盖的优点3.3 如何使用索引覆盖 4. 最左匹配原则&#xff08;Leftmost Prefix Match&#xff09;4.1 什么是最左匹配原则4.2 最…

扬尘监测:智能化解决方案让生活更美好

随着工业化和城市化的快速发展&#xff0c;扬尘污染问题越来越受到人们的关注。扬尘不仅影响城市环境&#xff0c;还会对人们的健康造成威胁。为了解决这一问题&#xff0c;扬尘监测成为了一个重要的手段。本文将介绍扬尘监测的现状、重要性以及智能化解决方案&#xff0c;帮助…

csdn问答混赏金的记录贴

本文只记录用户名称&#xff0c;证据详情请点击&#xff1a;证据详情传送门 文章目录 第一位——夜深人静的哝玛 (PS:与本人的头像和用户名大致一样&#xff0c;注意区分)第二位——代码调试大神&#xff08;惯犯&#xff0c;截不完&#xff09;第三位——这一次有糖 第一位——…

03_Node.js模块化开发

1 Node.js的基本使用 1.1 NPM nodejs安装完成后&#xff0c;会跟随着自动安装另外一个工具npm。 NPM的全称是Node Package Manager&#xff0c;是一个NodeJS包管理和分发工具&#xff0c;已经成为了非官方的发布Node模块&#xff08;包&#xff09;的标准。 2020年3月17日&…

vue3+elementPlus el-select 增加全选和取消全选

要求el-select支持多选&#xff0c;并增加全选和取消全选功能&#xff0c;缺点是提交的数据中会有全选这个字段 代码如下 <template><div>全选功能</div><el-select multiple collapse-tags v-modelselectedArray changechangeSelect remove-tagremoveTa…

SignalIR入门

SignalIR入门 简介教程1.创建项目2.添加 SignalR 客户端库3.创建 SignalR 中心4.配置 SignalR5.添加 SignalR 客户端代码 效果 简介 SignalR 是一个用于构建实时 Web 应用程序的开发工具和库&#xff0c;它可以让服务器端代码与客户端代码之间建立双向通信。SignalR 的中文解释…