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任务监控进度控制相关推荐

  1. java 开源 网络流量统计_jpcap java流量监控

    [实例简介] jpcap java流量监控 JPCAP实际上并非一个真正去实现对数据链路层的控制,而是一个中间件,JPCAP调用winpcap/libpcap,而给 JAVA语言提供一个公共的接口,从 ...

  2. 配置Java远程监控授权(Java Mission Control)

    配置Java远程监控授权(Java Mission Control) 转载URL:  http://www.icoolxue.com/blog/show/9 最近公司做的项目有比较严重的内存溢出问题, ...

  3. Fundebug后端Java异常监控插件更新至0.2.0,支持Spring及Maven

    摘要: 0.2.0支持监控Spring应用,并且支持使用Maven接入插件,请大家及时更新. 支持监控Spring应用 1. pom.xml配置fundebug-spring依赖 <depend ...

  4. 【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )

    FFmpeg 系列文章目录 [FFmpeg]Windows 搭建 FFmpeg 命令行运行环境 [FFmpeg]FFmpeg 相关术语简介 ( 容器 | 媒体流 | 数据帧 | 数据包 | 编解码器 ...

  5. 【Android FFMPEG 开发】FFMPEG 视频播放进度控制 ( 显示播放进度 | 拖动进度条播放 )

    文章目录 I . FFMPEG 播放进度控制 II . FFMPEG 播放视频 ( 效果展示 ) III . FFMPEG 获取视频时长 IV . FFMPEG 视频播放进度获取 V . FFMPEG ...

  6. opencv 实现进度控制

    进度控制: #include <opencv\cv.h> #include <opencv\highgui.h> #include <opencv\cxcore.h> ...

  7. java cpu监控,java系统监控CPU 磁盘

    java系统监控CPU 磁盘 import java.io.*; /** * linux 下cpu 内存 磁盘 jvm的使用监控 * @author avery_leo * */ public cla ...

  8. 关于Java性能监控您不知道的5件事

    责怪糟糕的代码(或不良代码对象)并不能帮助您发现瓶颈,提高 Java™ 应用程序速度,猜测也不能帮您解决.Ted Neward 引导您关注 Java 性能监控工具,从5 个技巧开始,使用Java 5 ...

  9. java反向注入_java 控制反转和依赖注入的理解

    开始好好学习java基础和思想~ 控制反转(IOC)是Spring框架的核心思想,用我自己的话说,就是你要做一件事,别自己可劲new了,你就说你要干啥,然后外包出去就好~ 依赖注入(DI) 在我浅薄的 ...

最新文章

  1. 面试:GET和POST两种基本请求方法有什么区别
  2. what are the associated papers accepted at the Harvard business review from cambridge
  3. centos mysql php tomcat_Linux 安装JDK Tomcat MySQL的教程(使用Mac远程访问)
  4. 计算机网络实用期末试题和答案,计算机网络期末考试试题及答案(1)
  5. 图的最小生成树(Prim算法)
  6. MyEclipse下JDBC-MySQL配置总结
  7. java中四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较(转)
  8. shell 模拟多进程(3)
  9. 最长递增子序列(LIS longest-increment-subsequence)最长连续递增子序列 最大连续子序列和
  10. git学习笔记(1-集中式与分布式版本控制工具对比)
  11. 使用字典暴力破解练习
  12. java 读取网络js文件_JavaScript 读写文件
  13. Android app客户端性能测试工具Emmagee 浅析
  14. 六家共享单车加入免押计划 押金模式即将崩盘?
  15. 学习 spring-cloud-aibaba第九篇,综合应用微信小程序《背诗词》
  16. html+css+js 简易笔记
  17. tensorflow报错Can not squeeze dim[1], expected a dimension of 1, got n for解决办法
  18. Unity实战——模拟太阳系
  19. Linux之V4L2驱动框架
  20. SPRINGBOOT中如何进行开发环境和生产环境的配置?

热门文章

  1. s>/<s>.css?12345‘“\‘\“);|]*%00{%0d%0a<%00>%bf%2项目检测问题Application error message
  2. docker cp传递整个目录
  3. 点对点语音通信(转)
  4. 蓝牙mesh- Features和设备类型
  5. 小程序转uniapp——disabled
  6. native react 图片多选_N-第三方-react-native-image-picker,选择图片上传
  7. cocos2d-x lua 框架中 self.super.ctor(self, app) 和 self.super:ctor(app) 的区别
  8. Elasticsearch 实现类似SQL语句中like %关键字% 的单纯模糊查询(不进行分词)
  9. DOS基础使用专题(强烈推荐)2
  10. uniapp 简单表单布局1