Go 编写定时器和定时任务
在 项目开发当中,可能会遇到这样的场景:
1 A任务需要在多久之后执行一次(定时器)
2.B任务需要每隔多长时间执行一次 (定时任务)
谈到定时任务,离不开linux的crontab. 先简单了解下crontab
使用crontab实现定时器和定时任务也可以,但是crontab默认只能精确到分钟, 如果想要精确到秒可以使用for循环处理秒级人物
本文简单介绍下go 实现定时器和定时任务的用法以及简单介绍一个第三方库gocron的用法
Timer
1 timer实现定时器 (延迟执行), 这个定时器只会触发一次.
使用于场景1(当然如果把下面的代码写在一个for循环中也可以实现定时任务)
Demo:
结果:
1 s 时间到
2 停止定时器
使用time.Stop() 停止定时器
通过向通道发送一个信号,通知定时器是否关闭
Demo:
结果:
继续执行定时器
重置定时器
Demo:
结果:
定时器开始
1 s 时间到 1648268475
Ticker
Ticker也是定时器,它是一个周期性的定时器 使用场景2
设置3秒执行一次Demo
结果:
ticker ticker ticker ...
ticker ticker ticker ...
ticker ticker ticker ...
gocron
一个第三方库实现定时任务 场景2
安装
Demo
结果:
cron2
cron1
cron1
cron2
cron1
cron2
cron1
cron2