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任务调度的更多相关文章

  1. .net 分布式架构之任务调度平台

    开源地址:http://git.oschina.net/chejiangyi/Dyd.BaseService.TaskManager .net 任务调度平台 用于.net dll,exe的任务的挂载, ...

  2. 免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)

    很多的软件项目中都会使用到定时任务.定时轮询数据库同步,定时邮件通知等功能..NET Framework具有“内置”定时器功能,通过System.Timers.Timer类.在使用Timer类需要面对 ...

  3. Spring Quartz实现任务调度

    任务调度 在企业级应用中,经常会制定一些"计划任务",即在某个时间点做某件事情 核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作 任务调度涉及多线程并发.线程池维 ...

  4. Quartz实现任务调度

    一.任务调度概述 在企业级应用中,经常会制定一些"计划任务",即在某个时间点做某件事情,核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作,任务调度涉及多线程并发. ...

  5. 基于ASP.NET MVC(C#)和Quartz.Net组件实现的定时执行任务调度

    http://www.cnblogs.com/bobositlife/p/aspnet-mvc-csharp-quartz-net-timer-task-scheduler.html 在之前的文章&l ...

  6. Quartz任务调度基本使用

    转自:http://www.cnblogs.com/bingoidea/archive/2009/08/05/1539656.html 上一篇:定时器的实现.Java定时器Timer和Quartz介绍 ...

  7. 从零开始学 Java - Spring 使用 Quartz 任务调度定时器

    生活的味道 睁开眼看一看窗外的阳光,伸一个懒腰,拿起放在床一旁的水白开水,甜甜的味道,晃着尾巴东张西望的猫猫,在窗台上舞蹈.你向生活微笑,生活也向你微笑. 请你不要询问我的未来,这有些可笑.你问我你是 ...

  8. #研发中间件介绍#定时任务调度与管理JobCenter

    郑昀 最后更新于2014/11/11 关键词:定时任务.调度.监控报警.Job.crontab.Java 本文档适用人员:研发员工   没有JobCenter时我们要面对的:   电商业务链条很长,业 ...

  9. #数据技术选型#即席查询Shib+Presto,集群任务调度HUE+Oozie

    郑昀 创建于2014/10/30 最后更新于2014/10/31   一)选型:Shib+Presto 应用场景:即席查询(Ad-hoc Query) 1.1.即席查询的目标 使用者是产品/运营/销售 ...

随机推荐

  1. linux命令快速手记 — 让手指跟上思考的速度(四)

    pm2 list:列出pm2方式启动的所有程序 pm2 monit:显示每个应用程序的CPU和内存占用情况 scp:远程复制和本地上传,适用于本地ssh登录到远程服务器 scp root@10.10. ...

  2. java基础之BigInteger

    BigInteger类概述可以让超过Integer范围内的数据进行运算 构造方法 public BigInteger(String val) 成员方法: public BigInteger add(B ...

  3. [COCI2019] Mobitel

    题目 显然不小于\(n\)这个东西我们不是很好搞,考虑正难则反,求出有多少条路径小于\(n\),之后拿\(C_{n+m}^m\)一减就好了 于是状态为\(dp[i][j][k]\)表示到\((i,j) ...

  4. 【NOIP2018模拟11.01】树

    题目 描述 题目大意 维护一个序列,支持三种操作: 1.修改一段区间,将这段区间内的所有数都andandand一个数. 2.询问区间和. 3.询问区间两两相加的平方和. N≤10000N\leq 10 ...

  5. day72作业

    目录 models模型类 路由配置 视图配置 序列化组件配置 基于ModelSerializer类,完成Car资源的单查,群查,单增接口 序列化:显示车名,车的颜色,车的价格,车的海报,车的品牌 反序 ...

  6. BZOJ 1933 [Shoi2007]Bookcase 书柜的尺寸

    神奇的dp优化. 考虑6维状态的dp,分别表示三行高和宽,显然MLE&&TLE. 把高排个序,从大到小往架上放,那么若不是重开一行便对高度没有影响. 然后求出宽度的sum,dp[i][ ...

  7. android 开发环境问题

    一.console出现The connection to adb is down, and a severe error has occured. .先把eclipse关闭. .在管理器转到你的and ...

  8. CentOS 6.5 服务器相关配置

    vi /etc/sysconfig/network-scripts/ifcfg-eth0 #配置网卡 ONBOOT=YES #静态IPBOOTPROTO=static #启用地址协议 --static ...

  9. C# 无边框窗体移动和改变大小的实现

    自己给软件做的皮肤,将窗体设为无边框后,想要其具有正常窗体的移动和改变大小功能,以下代 码可以实现.... //需添加using System.Runtime.InteropServices; [Dl ...

  10. webServices学习四(---WebService监听工具)

    之前我们使用过HttpWatch获取的HTTP的调用过程,并获得了HTTP的请求头及其他请求的详细信息. 既然WebServie也是通过HTTP进行通信的,能不使用HTTPWatch来获取它的请求过程 ...