timer 计时器
用于在指定的Duration类型时间后调用函数或计算表达式。
如果只是想指定时间之后执行,使用time.Sleep()
使用NewTimer(),可以返回的Timer类型在计时器到期之前,取消该计时器
直到使用<-timer.C发送一个值,该计时器才会过期
定义计数器
timer := time.NewTimer(time.Second * 2)
停止定时器
timer.Stop()
强制的修改timer中规定的时间
timer.Reset(0)
间隔执行
time包中有个Ticker可以用来实现简单的定时任务。
ticker := time.NewTicker(5 * time.Second)
for _ = range ticker.C {
fmt.Println(time.Now())
}
Ticker会在每隔一段时间执行,比如上面的例子中,每隔5秒打印一下当前时间。
package main
import (
"fmt"
"time"
"sync"
)
func main() {
ticker := time.NewTicker(5 * time.Second)
quit := make(chan int)
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
fmt.Println("child goroutine bootstrap start")
for {
select {
case <- ticker.C:
fmt.Println("ticker .")
case <- quit:
fmt.Println("work well .")
ticker.Stop()
return
}
}
fmt.Println("child goroutine bootstrap end")
}()
time.Sleep(10 * time.Second)
quit <- 1
wg.Wait()
}
打印结果:
child goroutine bootstrap start
ticker .
ticker .
work well .