描述
当需要每天执行定时任务的时候就需要定时器来处理了,周期任务,倒计时任务,定点任务等。。。
周期任务
5秒钟后执行一个任务ticker.C是一个缓冲为1的channel,
ticker:=time.NewTicker(time.Second*5)
go func() {
for _=range ticker.C {
println("test")
}
}()
time.Sleep(time.Minute)
倒计时
//主线程阻塞
timer1:=time.NewTimer(time.Second*5)
<-timer1.C
println("test")
//主线程不阻塞
timer2 := time.NewTimer(time.Second)
go func() {
//等触发时的信号
<-timer2.C
fmt.Println("Timer 2 expired")
}()
//由于上面的等待信号是在新线程中,所以代码会继续往下执行,停掉计时器
time.Sleep(time.Second*5)
高级倒计时
//golang 定时器,启动的时候执行一次,以后每天晚上12点执行
func startTimer(f func()) {
go func() {
for {
f()
now