线程池定时任务添加任务以及停止线程

2023-05-16

                最近有个需求,就是项目启动的时候需要创建个线程池去执行,而且有时间周期,

而且根绝不同的情况可以随时通过接口停止该线程.

//1首先创建个线程池 ,默认核心为10
    static ScheduledExecutorService threadPool = Executors.newScheduledThreadPool(10);


//2 在写一个启动项目自动启动的注解
   @PostConstruct
    public void initHttpApiDetectSuffix() {


        logger.info("创建线程池");
        BaseEncryptionAndDecryption instance = GetEncryptionAndDecryptionBean.getInstance();
        List<HttpApiDetectManageDO> list = httpApiDetectManageMapper.selectAllByParam(null, null, null, null, 1);
        list.stream().forEach(bean -> map.put(bean.getApiName(), bean.getStatus()));
        for (HttpApiDetectManageDO bean : list) {
            //调用线程的方法
            httpApiDetectStart(threadPool, count, bean, map, instance);
            count++;
        }
        logger.info("现有探测线程数为:{}", map.size());


    }



//3然后再创建一个方法

 public void httpApiDetectStart1(ScheduledExecutorService threadPool, int i, HttpApiDetectManageDO bean, Map<String, Integer> map, BaseEncryptionAndDecryption instance) {
        ScheduledFuture<?> scheduledFuture = threadPool.scheduleAtFixedRate(new Runnable() {
                                                                                @Override
                                                                                public void run() {
                                                                                    if (map.get(bean.getApiName()) == 0) {

                                                                                        logger.info("http探测线程停止,apiName={}", bean.getApiName());
                                                                                        Thread.currentThread().stop();
                                                                                    }
                                                                                    String url;
                                                                                    logger.info("执行第" + i + "个接口探测scheduleAtFixedRate 方法:" + LocalDateTime.now());
                                                                                        url = bean.getProtocol()+bean.getApiIp() + ":" + bean.getApiPort() + bean.getDetectAddr();
                                                                                        String detectParams = bean.getDetectParams();
                                                                                        Map params = null;
                                                                                        if (StringUtils.isNotBlank(detectParams)) {
                                                                                            params = JSON.parseObject(detectParams);
                                                                                            logger.info("平台探测参数-->{}",params);
                                                                                        }
                                                                                        ApiCheckResult r = null;
                                                                                        try {
                                                                                            r = HttpJdk.doCall(url, params, "get", -1);
                                                                                            logger.info("平台探测结果-->{}",r);
                                                                                            insertDB(r, bean);
                                                                                        } catch (Exception e) {
                                                                                            e.printStackTrace();
                                                                                            logger.info(e.getMessage());
                                                                                        }



                                                                                }
                                                                            },
                0, // 0s 后开始执行定时任务
                bean.getDetectCycle(), // 定时任务的执行间隔为
                TimeUnit.MINUTES);// 描述上面两个参数的时间单位

    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

线程池定时任务添加任务以及停止线程 的相关文章

  • FSL图像计算基础命令:fslmaths, fslstats, fslmeants

    一 fslmaths fslmaths是一个功能非常强大的图像计算器 xff0c 可以用来执行各种各样的图像处理 span class token comment Usage fslmaths dt lt datatype gt lt fi
  • 第八届蓝桥杯个人省赛(软件类)C组第一题贪吃蛇长度

    题目如下 标题 xff1a 贪吃蛇长度 43 43 H
  • STM32串口下载程序(官方下载软件)

    ST官方有一款专门用于串口下载程序的下载软件STM32 Flash loader demonstrator FLASHER STM32 xff0c 目前的最新版本是V2 8 0版 xff0c 下载链接如下 xff1a https my st
  • 操作系统:生产者-消费者问题

    生产者 消费者问题 一 问题描述 系统中有一组生产者进程和消费者进程 xff0c 生产者进程每次生产一个产品放入缓冲区 xff0c 消费者进程每次从缓冲区中取出一个产品并使用 其中 xff0c 缓冲区的容量为n 上图是生产者 消费者问题的模
  • Ubuntu18.04 误删/usr/bin/python3的解决方案

    Ubuntu18 04 误删 usr bin python3的解决方案 这应该是一个链接文件 xff0c Python pip3等指令都会指向它 xff0c 删除之后无法打开Python解释器我在误删之后 首先重新下载了Python3 8
  • 对机器人的认知整理

    机器人的定义与特点 机器人是自动执行工作的机器装置 xff0c 可以接受人的指挥 运行预先编排的程序或者根据人工智能技术指定的原则纲领行动 机器人 包含传感器 执行器 xff0c 能够与物理世界交互 xff0c 可编程 xff0c 能够进行
  • 计算机图形学

    上课时间 xff1a 2 12周周二上午1 2 3节 Lesson1 9月15日 这堂课讲了第1 2 3章节 第一章 概述第二章 计算机图形硬件系统第三章 图形标准 第一章 概述 1 1 定义 计算机图形学是研究怎样用计算机生成 处理和显示
  • Unity导出apk出现的问题,JDK,Android SDK,NDK,无“安装模块”

    导出apk失败 使用unity导出apk文件 xff0c 会出现提示 xff1a 需要合适版本的JDK Android SDK和Android NDK xff0c 要找到 下载和安装好合适的版本非常耗费时间 xff0c 网上很多教程指出可以
  • 论文阅读:带有物体级重定位的视觉惯性多实例动态SLAM

    带有物体级重定位的视觉惯性多实例动态SLAM Ren Y Xu B Choi C L et al Visual Inertial Multi Instance Dynamic SLAM with Object level Relocalis
  • Ubuntu内存清理经验整理

    本文档用于整理记录清理ubuntu内存过程中的经验 首先 xff0c 可以使用内置程序 Disk Usage Analyzer 分析 xff0c 直观看到哪些文件夹占用内存较大 另外 xff0c 也可以使用指令du sh sort h查看当
  • 论文阅读 | LOAM:实时Lidar里程计和建图

    Zhang J Singh S LOAM Lidar odometry and mapping in real time C Robotics Science and Systems 2014 2 9 1 9 64 inproceeding
  • 一招解决由于找不到vcruntime140_1.dll,无法继续执行代码

    电脑系统丢失vcruntime140 1 dll文件 xff0c 会导致很多软件跟游戏打不开 xff0c 也无法运行 xff0c 比如常见的ps xff0c pr xff0c 吃鸡游戏等等 那需要我们怎么修复呢 xff1f 相信这个问题困扰
  • 终端/Vscode + GDB调试C++程序

    CMakeLists中需要设置编译类型为Debug set CMAKE BUILD TYPE Debug 下载gdb调试器 span class token function sudo span span class token funct
  • k8s节点加入集群

    k8s节点加入集群流程及常见问题 移除docker yum remove docker docker client docker client latest docker common docker latest docker latest
  • pulsar常用命令

    创建安全认证key bin pulsar tokens create secret key output data admin secret key 创建角色 xff0c 生成token bin pulsar tokens create s
  • 转-docker入门

    Docker入门教程 xff08 详细 xff09 JWei 7的博客 CSDN博客 docker 入门教程
  • 用Bmob实现用户数据添加和查询显示

    我用的例子利用Bmob云服务器实现了让用户上传待出售商品信息 xff0c 以及能浏览在售商品信息的小功能 刚接触Bmob感觉它确实好用 xff0c 但我不得不吐槽那个案例更新的太慢了 xff0c 新版本的SDK跟老版本还是有很大差别的 xf
  • linux中的文件移动

    Linux不同于Windows xff0c 在Windows操作系统中我们只需要傻瓜式的将文件用鼠标拖到目标文件夹即可 xff0c 但是在Linux中移动文件却不是那么的简单 以Ubuntu16 04为例说一下Linux中的文件的移动 1
  • android顶部回退按钮的实现

    最近看来好多关于android顶部导航栏回退的实现 如下图效果 点击返回上级页面 xff0c 网上的大部分都实现特别繁琐 xff0c 其实安卓自带BUFF 在Manifest清单文件中一句代码就能搞定 xff0c 特别easy xff0c
  • 树莓派与Android客户端进行socket通信

    首先 xff0c 需要对树莓派进行配置 xff0c 使其成为AP热点 xff0c 这里我用的树莓派3B自带wifi蓝牙模块 xff0c 树莓派3B作AP热点的方法具体参考https blog csdn net u014271612 arti

随机推荐

  • android客户端控制树莓派GPIO点亮LED灯

    首先需要android客户端与树莓派进行连接 xff0c 树莓派与android客户端利用wifi连接并进行socket通信请参考我的另一片文章 xff1a https mp csdn net postedit 79911322 树莓派与A
  • 百度2014校园招聘 软件研发工程师 笔试题

    一 简答题 xff08 本题共30 xff09 1 动态链接库和静态链接库分别有什么优缺点 xff1f xff08 10 xff09 2 轮询任务调度与抢占式任务调度的区别 xff1f xff08 10 xff09 3 请列出数据库中常用的
  • java基础编程案例

    java编程案例 案例一 xff1a 飞机票查看优惠系统案例二 xff1a 获取素数案例三 xff1a 验证码模块案例四 xff1a 数组元素的复制案例五 xff1a 评委打分案例六 xff1a 数字加密程序案例七 xff1a 模拟双色球系
  • Java基础之集合框架--Collections工具类之max()方法

    max 方法一个参数的源码 xff1a public static lt T extends Object amp Comparable lt super T gt gt T max Collection lt extends T gt c
  • python创建一个txt文件

    创建一个txt文件 xff0c 文件名为mytxtfile 并向文件写入msg 注意文件的路径不要错 xff0c 还有文件的格式 创建一个txt文件 xff0c 文件名为mytxtfile 并向文件写入msg def text create
  • Android--Jetpack的使用(一)

    目录 1 ViewModel 2 ViewModel 43 LiveData 3 ViewModel 43 LiveData 43 dataBinding 4 ViewModel 43 SavedStateHandle 43 LiveDat
  • Git 常用命令

    一 Git常用命令 1 配置用户名 xff08 上传代码的用户名 xff09 xff1a git config global user name 34 ljs 34 2 配置用户邮箱 xff08 其他作者联系你的邮箱 xff09 xff1a
  • 游戏开发图书推荐--我读过的技术经典图书

    很多同学问我学游戏开发应该看些什么书 xff0c 我在这里抛砖引玉 xff0c 给一份推荐表 xff0c 希望大家共同提高 由于本人英文不太好 xff0c 推荐的大部书籍都是国人编写的 xff0c 有些经典的外文图书可能是翻译不好 xff0
  • Git中使用.gitignore忽略文件的推送

    1 简介 在使用Git管理自己的代码版本时 xff0c 由于编译生成的中间文件 xff0c Git使用SHA 1算法来对文件进行加密 xff0c 进而得出来一个40位的十六进制加密字符串 325525d8b1f67b5ddd37956a8a
  • AFNetWorking3.0处理请求头和请求内容

    今天要处理用户的相关信息 xff0c 需要在HTTP请求中添加请求头 xff0c 网上大部分资料都是针对AFNetWorking2 0的 xff0c 我用3 0版本实现了相关功能 xff0c 见下面代码 首先是请求的URL xff0c sp
  • chrome浏览器安装插件,提示程序包无效

    chrome浏览器安装插件的时候 xff0c 如果提示 程序包无效 xff1a CRX HEADER INVALID xff0c 导致插件安装不上去 xff0c 这个时候该怎么办呢 xff1f 通常 xff0c 这种错误在chrome浏览器
  • viewpage+radiogroup

    lt xml version 61 34 1 0 34 encoding 61 34 utf 8 34 gt lt LinearLayout xmlns android 61 34 http schemas android com apk
  • 线程执行设置超时时间

    import java util concurrent 记录 xff0c 备忘 线程执行设置超时时间 public class Main2 定义线程池 xff0c 推荐手动创建线程池 xff1a https blog csdn net LL
  • Java集合工具类Collections常用方法详解

    文章目录 1 Collections介绍2 Collections常用方法2 1 reverse 2 2 sort 2 3 swap 2 4 min 和max 2 5 copy 2 6 fill 2 7 replaceAll 2 8 shu
  • 智慧小区智能物业管理系统综合解决方案

    因为传统的办公方式效率低 xff0c 工作强度大 人们需耗费大量的时间和精力去手工处理那些繁杂 重复的工作 xff0c 而手工处理的延时和差错 xff0c 正是现代化管理中应该去除的弊端 又由于物业管理企业的启动基金不足 xff0c 多种经
  • LAMP基础搭建

    目录 一 LAMP 1 LAMP环境 2 组成部分 xff08 1 xff09 Linux xff08 平台 xff09 xff08 2 xff09 Apache xff08 前台 xff09 xff08 3 xff09 Mysq xff0
  • python获取子窗口句柄

    2022 09 17 python获取子窗口句柄 python获取窗口句柄 python获取进程 python获取电脑微信小游戏的窗口句柄 上图为按键精灵的工具 python3 xff0c 简单的获取了下句柄 xff0c 想改改内存的 xf
  • Linux多线程编程(三)-----生产者与消费者(条件变量,信号量)

    Linux多线程编程 xff08 一 xff09 xff1a http blog csdn net llzk article details 55670172 Linux多线程编程 xff08 二 xff09 xff1a http blog
  • 微策略的笔试题

    觉得在收获Offer的季节应该为自己积累些人品了 xff0c 在这里将今天的情况向所有求Offer的童鞋分享下 从上个周末开始反应迟钝的我终于有了些求Offer的感觉 xff0c 几天参加了4场面试 xff0c 基本上没觉得有很大的挑战 x
  • 线程池定时任务添加任务以及停止线程

    最近有个需求 就是项目启动的时候需要创建个线程池去执行 而且有时间周期 而且根绝不同的情况可以随时通过接口停止该线程 1首先创建个线程池 默认核心为10 static ScheduledExecutorService threadPool