. golang定时的区别
第一种——
1timer := time.NewTimer(time.Time)
复制代码
第二种——
1ticker := time.NewTicker(time.Time)
复制代码
- ticker和timer定时器两者都有Stop()方法,但timer定时器多一个Reset()方法
- timer定时器默认情况下只执行一次,若要再次执行则调用Reset()方法,ticker定时器则默认执行多次
. 定时执行任务
第一种——
1// ticker写法
2ticker := time.NewTicker(time.hour) //定时一个小时
3defer ticker.Stop()
4for {
5 <- ticker.C
6 fmt.Println(time.Now())
7}
复制代码
第二种——
1// timer写法
2timer := time.NewTimer(time.Second)
3defer timer.Stop()
4for {
5 <- timer.C
6 fmt.Println("timout...")
7 // reset
8 timer.Reset(time.Second)
9}
复制代码
. 定点执行任务
即指定每天某个时间点执行任务
1func startTimer(f func()) {
2 t := time.NewTimer(Hour)
3 for {
4 f()
5 now := time.Now()
6 // 计算下一个零点
7 next := now.Add(time.Hour * 24)
8 next = time.Date(next.Yeadr(), next.Month(), next.Day(), 0, 0, 0, 0, next.Location(next.Sub(now))
9
10 t.Reset(next)
11 <-t.C
12 }
13}
复制代码
. 定时器的作用
用来离线跑脚本任务