Golang定时任务实现 time.Ticker用法

time.Ticker可用于周期性执行任务,如每2秒触发一次操作,通过ticker.C接收信号,需调用ticker.Stop()防止资源泄漏;结合select与退出channel可实现优雅停止,适用于服务常驻场景;若只执行N次,可用for循环控制次数;与time.Timer区别在于Ticker周期触发,Timer仅触发一次,使用时需注意及时释放资源。

golang定时任务实现 time.ticker用法

在Go语言中实现定时任务time.Ticker 是一个非常实用的工具。它能按照指定的时间间隔持续触发事件,非常适合用于周期性执行某些操作,比如定时上报日志、定期清理缓存、健康检查等场景。

time.Ticker 基本用法

time.Ticker 会每隔一段时间发送一个信号到它的 Channel(C),你可以通过读取这个 Channel 来触发任务。

创建一个每2秒执行一次的任务示例:

ticker := time.NewTicker(2 * time.Second)defer ticker.Stop() // 避免资源泄漏

for range ticker.C {fmt.Println("执行定时任务:", time.Now())}

上面代码中,NewTicker 创建了一个每2秒触发一次的 Ticker,ticker.C 是一个 time.Time 类型的 channel,每次到达间隔时间就会写入当前时间。使用 defer ticker.Stop() 很重要,防止 Goroutine 和系统资源泄漏。

立即学习“go语言免费学习笔记(深入)”;

带退出控制的定时任务

实际开发中,通常需要能够优雅地停止定时任务,比如程序关闭时。可以通过 select 结合退出 channel 实现:

ticker := time.NewTicker(3 * time.Second)defer ticker.Stop()

quit := make(chan bool)

站长俱乐部购物系统
站长俱乐部购物系统

功能介绍:1、模块化的程序设计,使得前台页面设计与程序设计几乎完全分离。在前台页面采用过程调用方法。在修改页面设计时只需要在相应位置调用设计好的过程就可以了。另外,这些过程还提供了不同的调用参数,以实现不同的效果;2、阅读等级功能,可以加密产品,进行收费管理;3、可以完全可视化编辑文章内容,所见即所得;4、无组件上传文件,服务器无需安装任何上传组件,无需支持FSO,即可上传文件。可限制文件上传的类

站长俱乐部购物系统 0
查看详情 站长俱乐部购物系统

go func() {time.Sleep(10 * time.Second) // 模拟运行一段时间后退出quit <- true}()

for {select {case <- ticker.C:fmt.Println("定时任务执行中...", time.Now())case <- quit:fmt.Println("收到退出信号,停止定时任务")return}}

这种方式让定时任务可以响应外部控制,适用于服务常驻进程中的场景。

只执行N次的定时任务

如果只想让任务执行固定次数,可以用 for-range 配合计数器:

ticker := time.NewTicker(1 * time.Second)defer ticker.Stop()

for i := 0; i < 5; i++ {<- ticker.Cfmt.Printf("第 %d 次执行: %vn", i+1, time.Now())}

这种方式比使用 time.Sleep 更精确,因为 ticker 能保证每次间隔严格对齐。

与 time.Timer 的区别

time.Timer 只触发一次,而 time.Ticker 是周期性触发。如果你只需要延迟执行一次,用 Timer 更合适;如果是循环任务,Ticker 更自然。

注意:Ticker 在不再使用时必须调用 Stop(),否则会导致 Goroutine 泄漏,即使程序逻辑已经退出。

基本上就这些。合理使用 time.Ticker,再配合 select 和 channel 控制,就能写出稳定可靠的定时任务逻辑。不复杂但容易忽略细节,尤其是资源释放。

以上就是Golang定时任务实现 time.Ticker用法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1399093.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月15日 15:55:49
下一篇 2025年12月15日 15:56:08

相关推荐

发表回复

登录后才能评论
关注微信