go语言定时器Timer及Ticker怎么使用
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,本文小编为大家详细介绍"go语言定时器Timer及Ticker怎么使用",内容详细,步骤清晰,细节处理妥当,希望这篇"go语言定时器Timer及Ticker怎么使用"文章能帮助大家解决疑惑,下面跟着小
千家信息网最后更新 2025年01月18日go语言定时器Timer及Ticker怎么使用
本文小编为大家详细介绍"go语言定时器Timer及Ticker怎么使用",内容详细,步骤清晰,细节处理妥当,希望这篇"go语言定时器Timer及Ticker怎么使用"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
定时器1-"*/5 * * * * *"
package mainimport ( "fmt" "github.com/robfig/cron")//主函数func main() { cron2 := cron.New() //创建一个cron实例 //执行定时任务(每5秒执行一次) err:= cron2.AddFunc("*/5 * * * * *", print5) if err!=nil{ fmt.Println(err) } //启动/关闭 cron2.Start() defer cron2.Stop() select { //查询语句,保持程序运行,在这里等同于for{} }}//执行函数func print5() { fmt.Println("每5s执行一次cron")}
设置说明
┌─────────────second 范围 (0 - 60) │ ┌───────────── min (0 - 59) │ │ ┌────────────── hour (0 - 23) │ │ │ ┌─────────────── day of month (1 - 31) │ │ │ │ ┌──────────────── month (1 - 12) │ │ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to │ │ │ │ │ │ Saturday) │ │ │ │ │ │ │ │ │ │ │ │ * * * * * *
星号(*) :表示 cron 表达式能匹配该字段的所有值。如在第5个字段使用星号(month),表示每个月
斜线(/):表示增长间隔,如第2个字段(minutes) 值是 3-59/15,表示每小时的第3分钟开始执行一次,之后 每隔 15 分钟执行一次(即 3(3+0*15)、18(3+1*15)、33(3+2*15)、48(3+3*15) 这些时间点执行),这里也可以表示为:3/15
逗号(,):用于枚举值,如第6个字段值是 MON,WED,FRI,表示 星期一、三、五 执行
连字号(-):表示一个范围,如第3个字段的值为 9-17 表示 9am 到 5pm 直接每个小时(包括9和17)
问号(?):只用于 日(Day of month) 和 星期(Day of week),表示不指定值,可以用于代替 *
定时器2-Timer-Ticker
Timer //时间到了产生一次事件Ticker //时间到了循环产生事件
Timer-只执行一次
package mainimport ( "fmt" "time")func main() { //创建一个定时器,设置时间为2s,2s后,往time通道写内容(当前时间) timer := time.NewTimer(2 * time.Second) fmt.Println("当前时间:", time.Now()) //2s后,往timer.C写数据,有数据后,就可以读取 t := <-timer.C //channel没有数据前后阻塞 fmt.Println("t = ", t)}
Ticker-循环执行
package mainimport ( "fmt" "time")//验证time.NewTimer(),时间到了,只会响应一次func main() { timer := time.NewTicker(1 * time.Second) for { <-timer.C fmt.Println("时间到") }}
结果:
时间到
时间到
时间到
时间到
Timer延时功能
time.NewTimer(2 * time.Second) //相当于time.Sleep(2 * time.Second)func main() { //延时2s后打印一句话 timer := time.NewTimer(2 * time.Second) <-timer.C fmt.Println("时间到")}func main() { <-time.After(2 * time.Second) //定时2s,阻塞2s, 2s后产生一个事件,往channel写内容 fmt.Println("时间到")}
停止和重置定时器
ok := timer.Reset(1 * time.Second) //重新设置为1stimer.Stop() //停止定时器
停止:
func main() { timer := time.NewTimer(3 * time.Second) go func() { <-timer.C fmt.Println("子协程可以打印了,因为定时器的时间到") }() timer.Stop() //停止定时器 for { }}
重置:
func main() { timer := time.NewTimer(3 * time.Second) ok := timer.Reset(1 * time.Second) //重新设置为1s fmt.Println("ok = ", ok) <-timer.C fmt.Println("时间到")}
定时器Ticker使用
package mainimport ( "fmt" "time")func main() { ticker := time.NewTicker(1 * time.Second) i := 0 for { <-ticker.C i++ fmt.Println("i = ", i) if i == 5 { ticker.Stop() break } }}
读到这里,这篇"go语言定时器Timer及Ticker怎么使用"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
时间
定时器
字段
内容
语言
事件
到时
数据
文章
函数
小时
星号
星期
范围
循环
阻塞
妥当
一句话
任务
功能
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
元神5开头的是什么服务器
福建精益管理软件开发
青浦区本地软件开发技术指导
关于维护网络安全的宣传
总体设计不属于软件开发时期
厦门天唯世网络技术
陆家嘴金融软件开发公司
r程序连接数据库
腾讯网络安全实验室负责人
服务器搭建微信公众平台
eplan主数据库在哪
08版服务器任务管理器
织梦数据库打印
软件开发和信息安全的相关性
360网络安全验证如何取消
数据库结果到html显示
软件开发的详细步骤
如何改变数据库字符集
昆山市网络安全监察大队大队长
网络安全蓝皮书
苏州服务器应用线束什么价格
整个数据库系统
图书馆主题搜索数据库
网络安全关于产品异构介绍
梦幻新诛仙再续前缘服务器
达梦数据库杭州
er图和数据库表相关
公安网络安全隐患排查
软件开发 面试被鄙视了
数据库技术及应用精品课程