java任务监控进度控制
package com.audaque.module.safety.model;import java.io.Serializable; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @Description: 任务进度监控,目前是放在内存里,用jobId作key * @Author: LGH * @CreateDate: 2019/9/25 16:55 */ public class ProcessStatus implements Serializable {private static final long serialVersionUID = 864551434206076975L;/*** 任务jobid,dirId作为key,不暂存,直接运行任务,前端无法获取jobId提交,进度监控中使用*/private static Map<Integer, Integer> taskJobIdMap = new HashMap<Integer,Integer>();/*** 任务进度,jobId作为key*/private static Map<Integer, Integer> taskProcessMap = new HashMap<Integer,Integer>();/*** 任务状态,jobId作为key*/private static Map<Integer,Integer> taskStatusMap = new HashMap<Integer,Integer>();/*** 任务总数,jobId作为key*/private static Map<Integer, Integer> tasktotalMap = new HashMap<Integer,Integer>();private ProcessStatus(){}public static Map<Integer, Integer> taskJobIdMap() {return ProcessStatus.taskJobIdMap;}public static Map<Integer, Integer> taskProcessMap() {return ProcessStatus.taskProcessMap;}public static Map<Integer,Integer> tasktotalMap() {return ProcessStatus.tasktotalMap;}public static Map<Integer,Integer> taskStatusMap() {return ProcessStatus.taskStatusMap;}public void remove(Integer jobId) {taskProcessMap.remove(jobId);}public void removeStatus(Integer jobId) {taskStatusMap.remove(jobId);} }
使用
设置任务数量
/*** 设置任务总数,*/ ProcessStatus.tasktotalMap().put(jobId, instance.getNum());
任务进度设置
ProcessStatus.taskProcessMap().put(detail.getTotalJobId(), num); System.out.println("任务执行到第" + ProcessStatus.taskProcessMap().get(detail.getTotalJobId()));
执行完毕更新任务状态
logger.info(jobId + "安全审计执行完毕!" + instance.getNum()); ProcessStatus.taskProcessMap().put(jobId, instance.getNum()); ProcessStatus.taskStatusMap().put(jobId, 1);
五秒请求一次接口,获取任务进度
/*** @param* @Description: 任务执行进度* @Author: LGH* @CreateDate: 2019/9/23 11:25*/ @ResponseBody @ResourceAuthentication @GetMapping(path = "getTaskProgress.do") public String getTaskProgress(@RequestParam(required = false, defaultValue = "0") Integer jobId, @RequestParam(required = false, defaultValue = "0") Integer dirId) {NumberFormat numberFormat = NumberFormat.getInstance();// 设置精确到小数点后0位numberFormat.setMaximumFractionDigits(0);int i = 1;int j = 10;String result = "1";if (jobId == null || jobId.intValue() == 0) {jobId = ProcessStatus.taskJobIdMap().get(dirId);}if (jobId == null) {return "1";}if (ProcessStatus.taskProcessMap().get(jobId) != null) {i = ProcessStatus.taskProcessMap().get(jobId);}if (ProcessStatus.tasktotalMap().get(jobId) != null) {j = ProcessStatus.tasktotalMap().get(jobId);}if (i == 0) {return "1";}result = numberFormat.format((float) i / (float) j * 100);System.out.println("任务进度:" + ProcessStatus.taskProcessMap().get(jobId)); // 任务完成后可以销毁存的数据
if (result!=null&&result.equalsIgnoreCase("100")){ProcessStatus.taskProcessMap().remove(jobId);ProcessStatus.tasktotalMap().remove(jobId);ProcessStatus.taskStatusMap().remove(jobId); }
return result;}
askProcessMap().get(jobId)
java任务监控进度控制相关推荐
- java 开源 网络流量统计_jpcap java流量监控
[实例简介] jpcap java流量监控 JPCAP实际上并非一个真正去实现对数据链路层的控制,而是一个中间件,JPCAP调用winpcap/libpcap,而给 JAVA语言提供一个公共的接口,从 ...
- 配置Java远程监控授权(Java Mission Control)
配置Java远程监控授权(Java Mission Control) 转载URL: http://www.icoolxue.com/blog/show/9 最近公司做的项目有比较严重的内存溢出问题, ...
- Fundebug后端Java异常监控插件更新至0.2.0,支持Spring及Maven
摘要: 0.2.0支持监控Spring应用,并且支持使用Maven接入插件,请大家及时更新. 支持监控Spring应用 1. pom.xml配置fundebug-spring依赖 <depend ...
- 【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )
FFmpeg 系列文章目录 [FFmpeg]Windows 搭建 FFmpeg 命令行运行环境 [FFmpeg]FFmpeg 相关术语简介 ( 容器 | 媒体流 | 数据帧 | 数据包 | 编解码器 ...
- 【Android FFMPEG 开发】FFMPEG 视频播放进度控制 ( 显示播放进度 | 拖动进度条播放 )
文章目录 I . FFMPEG 播放进度控制 II . FFMPEG 播放视频 ( 效果展示 ) III . FFMPEG 获取视频时长 IV . FFMPEG 视频播放进度获取 V . FFMPEG ...
- opencv 实现进度控制
进度控制: #include <opencv\cv.h> #include <opencv\highgui.h> #include <opencv\cxcore.h> ...
- java cpu监控,java系统监控CPU 磁盘
java系统监控CPU 磁盘 import java.io.*; /** * linux 下cpu 内存 磁盘 jvm的使用监控 * @author avery_leo * */ public cla ...
- 关于Java性能监控您不知道的5件事
责怪糟糕的代码(或不良代码对象)并不能帮助您发现瓶颈,提高 Java™ 应用程序速度,猜测也不能帮您解决.Ted Neward 引导您关注 Java 性能监控工具,从5 个技巧开始,使用Java 5 ...
- java反向注入_java 控制反转和依赖注入的理解
开始好好学习java基础和思想~ 控制反转(IOC)是Spring框架的核心思想,用我自己的话说,就是你要做一件事,别自己可劲new了,你就说你要干啥,然后外包出去就好~ 依赖注入(DI) 在我浅薄的 ...
最新文章
- 面试:GET和POST两种基本请求方法有什么区别
- what are the associated papers accepted at the Harvard business review from cambridge
- centos mysql php tomcat_Linux 安装JDK Tomcat MySQL的教程(使用Mac远程访问)
- 计算机网络实用期末试题和答案,计算机网络期末考试试题及答案(1)
- 图的最小生成树(Prim算法)
- MyEclipse下JDBC-MySQL配置总结
- java中四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较(转)
- shell 模拟多进程(3)
- 最长递增子序列(LIS longest-increment-subsequence)最长连续递增子序列 最大连续子序列和
- git学习笔记(1-集中式与分布式版本控制工具对比)
- 使用字典暴力破解练习
- java 读取网络js文件_JavaScript 读写文件
- Android app客户端性能测试工具Emmagee 浅析
- 六家共享单车加入免押计划 押金模式即将崩盘?
- 学习 spring-cloud-aibaba第九篇,综合应用微信小程序《背诗词》
- html+css+js 简易笔记
- tensorflow报错Can not squeeze dim[1], expected a dimension of 1, got n for解决办法
- Unity实战——模拟太阳系
- Linux之V4L2驱动框架
- SPRINGBOOT中如何进行开发环境和生产环境的配置?
热门文章
- s>/<s>.css?12345‘“\‘\“);|]*%00{%0d%0a<%00>%bf%2项目检测问题Application error message
- docker cp传递整个目录
- 点对点语音通信(转)
- 蓝牙mesh- Features和设备类型
- 小程序转uniapp——disabled
- native react 图片多选_N-第三方-react-native-image-picker,选择图片上传
- cocos2d-x lua 框架中 self.super.ctor(self, app) 和 self.super:ctor(app) 的区别
- Elasticsearch 实现类似SQL语句中like %关键字% 的单纯模糊查询(不进行分词)
- DOS基础使用专题(强烈推荐)2
- uniapp 简单表单布局1