在golang中,我们可以通过time包的Sleep、Ticker、Timer来实现定时效果。
Sleep
先看Sleep如何实现一个定时:
func main() {
var flag chan int
go func() {
for {
time.Sleep(time.Duration(time.Second*5))
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
}
}()
<-flag
}
Ticker实现:
func main() {
var flag chan int
ticker := time.NewTicker(time.Duration(time.Second*5))
go func() {
for {
<- ticker.C
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
}
}()
<-flag
}
Timer实现:
func main() {
var flag chan int
timer := time.NewTimer(time.Duration(time.Second*5))
go func() {
for {
<- timer.C
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
timer.Reset(time.Duration(time.Second*5))
}
}()
<-flag
}
这其中,Ticker是一种循环的计时器,而Timer时间到期只会运行一次,不会重复执行,除非reset超时时间,一般Timer用来进行超时的处理判断。
本文介绍了在Golang中使用time包实现定时任务的三种方式:Sleep实现一次性定时,Ticker创建循环计时器,Timer用于单次执行并可重置。重点讲解了Ticker和Timer的区别,以及它们在实际开发中的应用场景。
1109

被折叠的 条评论
为什么被折叠?



