一、JTimer for JAVA简介

1、项目介绍

JTimer for JAVA是基于SpringBoot+layui秒级定时任务管理,取代crontab。其PHP版本 https ://gitee.com/itzhoujun/JTimer,基于thinkphp5+layui秒级定时任务管理,任务进程使用master-worker模型,无阻塞执行任务,预览图可以点击上方php版本连接,两个版本功能基本一致。

jtimer使用了master-worker进程模型,能够实现无阻塞执行任务。时间表达使用了cron表达式,可精确到秒级,方便好用(比crontab多一位)

运行环境包括了1、Linux;2、JDK1.8 及以上版本;3、mysql

cron表达式

2、安装教程

创建数据库jtimer,将src/main/resources目录下jtimer.sql导入修改application.yml中数据库连接配置在项目根目录下执行mvn clean package打包项目,将在target目录下生成jar包用java命令执行target下jar包:

java -jar jtimer-0.0.1-SNAPSHOT.jar > jtimer-java.log2>&1 &

用户名密码:admin/admin

当前版本缺少登录验证码功能,后续版本补上

3、进程描述

j进程描述

简单来说,就是两个worker进程,1个负责数据的读写(读任务,写日志),1个负责任务的执行(创建task进程执行任务)。

两者之间通过tp框架自带的文件缓存作为沟通的桥梁。

Q1: 为什么要用两个worker,而不是一个worker直接读数据库然后执行任务?

为了让任务不阻塞,执行每一个任务时都会创建一个新的task进程去执行,task进程执行完毕会退出。如果在worker进程使用了数据库连接,那么fork出来的task进程会继承worker进程的连接(共用一个数据库连接),在task进程退出后,worker和task共用的连接也将被关闭,导致worker断开数据库连接。

Q2:cron任务定时执行是如何实现的?

先解析任务的cron表达式得到该任务下次要执行的具体时间,然后将该任务置于时间轮片(TimingWheel)中,worker进程每秒查看一次时间轮片,发现有要执行的任务就取出来执行。执行完毕后再重复执行上面的步骤。(关于TimingWheel,请自行百度)

4、注意

本项目只在测试环境运行过,如果要用于生产环境,请自行进行严格的测试后再投入使用。如有问题,自行负责。定时器每秒有零点几毫秒的误差,几个小时累计下来可能有1秒的误差。因此要求时间非常精准的业务任务请不要使用本系统。

5演示图片

y演示1

演示5

java定时任务管理_基于SpringBoot+layui秒级定时任务管理:JTimer for JAVA项目相关推荐

  1. java 延时发送邮件_基于SpringBoot实现定时发送邮件过程解析

    前提: 1.springboot项目 2.引入maven 依赖 org.springframework.boot spring-boot-starter-mail 以下代码中涉及到的maven依赖有日 ...

  2. java 异常国际化_基于springboot实现http响应异常信息国际化

    背景 国际化是指在设计软件,将软件与特定语言及地区脱钩的过程.当软件被移植到不同的语言及地区时,软件本身不用做内部工程上的改变或修正. 本文提到的异常响应信息国际化是指:前端向后台发起请求,后台在处理 ...

  3. java jwt刷新_基于springboot+jwt实现刷新token过程解析

    前一段时间讲过了springboot+jwt的整合,但是因为一些原因(个人比较懒)并没有更新关于token的刷新问题,今天跟别人闲聊,聊到了关于业务中token的刷新方式,所以在这里我把我知道的一些点 ...

  4. java动物乐园_基于jsp的动物园管理系统-JavaEE实现动物园管理系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的动物园管理系统, 该项目可用各类java课程设计大作业中, 动物园管理系统的系统架构分为前后台两部分, 最终实现在 ...

  5. java员工信息管理_基于jsp的员工信息管理-JavaEE实现员工信息管理 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的员工信息管理, 该项目可用各类java课程设计大作业中, 员工信息管理的系统架构分为前后台两部分, 最终实现在线上 ...

  6. 基于java家教管理系统_基于jsp的家教信息管理-JavaEE实现家教信息管理 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的家教信息管理, 该项目可用各类java课程设计大作业中, 家教信息管理的系统架构分为前后台两部分, 最终实现在线上 ...

  7. java固定资产管理系统_基于jsp的固定资产管理系统-JavaEE实现固定资产管理系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的固定资产管理系统, 该项目可用各类java课程设计大作业中, 固定资产管理系统的系统架构分为前后台两部分, 最终实 ...

  8. java 健身会所_基于jsp的健身俱乐部会员-JavaEE实现健身俱乐部会员 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的健身俱乐部会员, 该项目可用各类java课程设计大作业中, 健身俱乐部会员的系统架构分为前后台两部分, 最终实现在 ...

  9. java 花卉管理系统_基于jsp的花卉交易-JavaEE实现花卉交易 - java项目源码

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的花卉交易, 该项目可用各类java课程设计大作业中, 花卉交易的系统架构分为前后台两部分, 最终实现在线上进行花卉 ...

最新文章

  1. spring amqp rabbitmq fanout配置
  2. (详细讲解)配置Pycharm连接服务器跑本地代码
  3. python 入门第六课 class面向对象OOP
  4. Windows和Linux下apache-artemis-2.10.0安装配置
  5. cxgrid 行合并单元格_Excel合并单元格无法筛选和排序,你必须掌握这3个小技巧...
  6. 微信小程序 图标的角标实现
  7. 优秀的Git客户端:Tower for mac
  8. 英雄联盟服务器维护时间,英雄联盟维护的时间是几点结束 lol维护公告几点结束今天...
  9. Fluent中floating point exception的问题原因及处理方法
  10. matlab高斯投影坐标,基于matlab的高斯投影正反算与相邻带坐标换算程序设计
  11. C语言编程从键盘输入n值
  12. 第三方账号登陆-sina微博_PC篇
  13. Windows Server 2012 R2安装并升级Exchange2010后端服务器(LZK)
  14. 食堂窗口排长队?社区如何改善老年人用餐问题
  15. memory:arm 分区layout以及虚拟内存布局-小结
  16. 我的第一篇博文——写下我的规划
  17. 单片机彩灯移动实验_单片机动态控制64个彩灯实验报告
  18. 海康摄像机在Edge浏览器的网页无法直接预览,按照要求安装WebComponents后仍然提示请安装插件的解决办法
  19. 程序员眼中的Linux操作系统——初识指令
  20. 中国中型、中小型企业的业务诉求

热门文章

  1. python sql注入脚本_python辅助sql手工注入猜解数据库案例分析
  2. python 小说数据挖掘_Python 中的实用数据挖掘
  3. (专题四)01 二维曲线
  4. Java多线程学习(二)synchronized关键字(1)
  5. POJ 2482 Stars in Your Window(线段树)
  6. VC的若干实用小技巧 (如何干净的删除一个类)
  7. [ubuntu]deb软件源
  8. linux 脚本返回值
  9. DEV控件:gridControl常用属性设置
  10. [转]ubuntu network is unreachable 解决记