cronexpr任务调度
package main import (
"github.com/gorhill/cronexpr"
"fmt"
"time"
) func main(){
var(
expr *cronexpr.Expression
err error
now time.Time
nextTime time.Time
) //if expr,err = cronexpr.Parse("* * * * *");err != nil{
// fmt.Println(err)
// return
//}
//expr = expr if expr,err = cronexpr.Parse("* * * * *");err !=nil{
fmt.Println(err)
return
}
expr = expr now = time.Now()
nextTime = expr.Next(now)
fmt.Println(now,nextTime) time.AfterFunc(nextTime.Sub(now), func() {
fmt.Println("被调度了:",nextTime)
}) time.Sleep(*time.Second)
}
-- ::25.7892266 + CST m=+0.017000401 -- :: + CST
被调度了: -- :: + CST Process finished with exit code
调度多个cron任务
package main import (
"github.com/gorhill/cronexpr"
"fmt"
"time"
)
//代表一个任务
type CronJob struct {
expr *cronexpr.Expression
nextTime time.Time//expr.Next(Now)
} func main(){
//需要有一个调度协程 它定时检查所有的cron任务 谁过期就执行谁
var(
expr *cronexpr.Expression
now time.Time
cronJob *CronJob
scheduleTable map[string]*CronJob //key:任务名字
) scheduleTable = make(map[string]*CronJob) now = time.Now() //1定义两个cronjob
expr = cronexpr.MustParse("*/5 * * * * * *")
cronJob = &CronJob{
expr:expr,
nextTime:expr.Next(now),
} scheduleTable["job1"] = cronJob expr = cronexpr.MustParse("*/5 * * * * * *")
cronJob = &CronJob{
expr:expr,
nextTime:expr.Next(now),
} scheduleTable["job2"] = cronJob go func() {
var(
jobName string
cronJob *CronJob
now time.Time
)
//定时检查一下任务调度表
for{
now = time.Now()
for jobName ,cronJob = range scheduleTable{
if cronJob.nextTime.Before(now) || cronJob.nextTime.Equal(now){
go func(jobName string) {
fmt.Println("执行:",jobName)
}(jobName)
cronJob.nextTime = cronJob.expr.Next(now)
fmt.Println("下次执行时间:",cronJob.nextTime)
}
} //睡眠100毫秒
select {
case <-time.NewTimer(*time.Millisecond).C://1将在100毫秒可读 返回 }
}
}() time.Sleep(time.Second*) }
下次执行时间: -- :: + CST
下次执行时间: -- :: + CST
执行: job2
执行: job1
下次执行时间: -- :: + CST
下次执行时间: -- :: + CST
执行: job2
执行: job1
下次执行时间: -- :: + CST
下次执行时间: -- :: + CST
执行: job1
执行: job2
下次执行时间: -- :: + CST
执行: job1
执行: job2
下次执行时间: -- :: + CST
下次执行时间: -- :: + CST
下次执行时间: -- :: + CST
执行: job1
执行: job2
下次执行时间: -- :: + CST
执行: job2
下次执行时间: -- :: + CST
执行: job1
cronexpr任务调度的更多相关文章
- .net 分布式架构之任务调度平台
开源地址:http://git.oschina.net/chejiangyi/Dyd.BaseService.TaskManager .net 任务调度平台 用于.net dll,exe的任务的挂载, ...
- 免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)
很多的软件项目中都会使用到定时任务.定时轮询数据库同步,定时邮件通知等功能..NET Framework具有“内置”定时器功能,通过System.Timers.Timer类.在使用Timer类需要面对 ...
- Spring Quartz实现任务调度
任务调度 在企业级应用中,经常会制定一些"计划任务",即在某个时间点做某件事情 核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作 任务调度涉及多线程并发.线程池维 ...
- Quartz实现任务调度
一.任务调度概述 在企业级应用中,经常会制定一些"计划任务",即在某个时间点做某件事情,核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作,任务调度涉及多线程并发. ...
- 基于ASP.NET MVC(C#)和Quartz.Net组件实现的定时执行任务调度
http://www.cnblogs.com/bobositlife/p/aspnet-mvc-csharp-quartz-net-timer-task-scheduler.html 在之前的文章&l ...
- Quartz任务调度基本使用
转自:http://www.cnblogs.com/bingoidea/archive/2009/08/05/1539656.html 上一篇:定时器的实现.Java定时器Timer和Quartz介绍 ...
- 从零开始学 Java - Spring 使用 Quartz 任务调度定时器
生活的味道 睁开眼看一看窗外的阳光,伸一个懒腰,拿起放在床一旁的水白开水,甜甜的味道,晃着尾巴东张西望的猫猫,在窗台上舞蹈.你向生活微笑,生活也向你微笑. 请你不要询问我的未来,这有些可笑.你问我你是 ...
- #研发中间件介绍#定时任务调度与管理JobCenter
郑昀 最后更新于2014/11/11 关键词:定时任务.调度.监控报警.Job.crontab.Java 本文档适用人员:研发员工 没有JobCenter时我们要面对的: 电商业务链条很长,业 ...
- #数据技术选型#即席查询Shib+Presto,集群任务调度HUE+Oozie
郑昀 创建于2014/10/30 最后更新于2014/10/31 一)选型:Shib+Presto 应用场景:即席查询(Ad-hoc Query) 1.1.即席查询的目标 使用者是产品/运营/销售 ...
随机推荐
- 分布式锁的Redis实现
当我们开始开发项目部署运行时,项目规模不大,只是在一个JVM实例中运行,对同一资源的并发访问用JDK自带的锁机制就可以解决资源同时访问的问题.而随着项目的不断发展,单体应用已经无法满足日益增长的访问需 ...
- Vue跳转相同路由不同参数,解决页面数据不自动刷新
参考: https://www.cnblogs.com/ainyi/p/9340311.html https://blog.csdn.net/weixin_41888813/article/detai ...
- Spriongboot+quartz定时任务
y需求: 需要一个定时任务,比如 2019-5-10 10:00 执行一次期初库存推送的功能~ Spring自带的@Schedule() 的cron表达式不支持年份,所以考虑一下quartz定时任 ...
- ArcGIS中线转面
1. 打开ArcMap用Add Data加载shp Polyline线文件. 2. 选Editor编辑\Start Editing开始编辑. 3. 选Editor编辑\More Editing Too ...
- R语言建立回归分析,并利用VIF查看共线性问题的例子
R语言建立回归分析,并利用VIF查看共线性问题的例子 使用R对内置longley数据集进行回归分析,如果以GNP.deflator作为因变量y,问这个数据集是否存在多重共线性问题?应该选择哪些变量参与 ...
- IDEA快速定位错误快捷键
- Win3.2有人用过么
老牌子的操作系统. 了,有人用过么,我还在用,感觉挺不错的,哈哈哈哈哈. 1.0那一代,画面粗糙,几乎不能算GUI操作系统. 2.0,画面较1.0一代明显改善,可惜的是,手头没货. 3.0 ...
- ssm整合:搭建环境
解决配置中文过滤器后,存入数据库时依旧乱码问题:在web.xml中修改数据库url如下: <property name="jdbcUrl" value="jdbc: ...
- cmd命令调用powershell脚本方法
cmd方法: powershell -command ". ('ps1脚本路径'); WriteInfo -param 'param参数值'" ps1脚本代码: function ...
- 循环读取文件夹中的图片matlab代码
参考:http://blog.csdn.net/guoxiaojie_415/article/details/21317323:http://blog.csdn.net/qikaihuting/art ...