Golang 定时任务的几种实现方法
在Golang中,实现定时任务的方法主要有以下几种:
- 使用time.Ticker
Ticker是定时器的一种,它会周期性地发送一个已经定义好的时间量。
package main
import (
"fmt"
"time"
)
func main() {
ticker := time.NewTicker(time.Second * 2)
done := make(chan bool)
go func() {
for {
select {
case <-done:
return
case t := <-ticker.C:
fmt.Println("Tick at ", t)
}
}
}()
time.Sleep(time.Second * 5)
ticker.Stop()
done <- true
}
- 使用time.AfterFunc
AfterFunc是一个在未来某个时间执行一次函数的定时器。
package main
import (
"fmt"
"time"
)
func main() {
timeout := time.AfterFunc(time.Second * 2, func() {
fmt.Println("Hello, world!")
})
timeout.Reset(time.Second * 5)
select {
case <-time.After(time.Second * 10):
fmt.Println("Timed out!")
return
}
}
- 使用第三方库
如果需要更高级的定时任务,可以使用第三方库,例如cron
。
首先,你需要安装cron库,可以通过以下命令安装:
go get -u github.com/robfig/cron/v3
然后,你可以使用cron库来定义定时任务。
package main
import (
"fmt"
"time"
"github.com/robfig/cron/v3"
)
func main() {
c := cron.New()
c.AddFunc("@every 2s", func() { fmt.Println("Tick!", time.Now()) })
c.Start()
select {
case <-time.After(time.Second * 10):
c.Stop()
fmt.Println("Timed out!")
return
}
}
以上就是Golang中实现定时任务的几种方法。
评论已关闭