GO语言定时器
ticker
- 通过 time.NewTicker() 创建,这种类型,ticker会不断的按照设定的间隔时间触发,除非主动终止运行。
type Ticker struct {
C <-chan Time // The channel on which the ticks are delivered.
r runtimeTimer
}
package main
import (
"time"
"fmt"
)
func main(){
var x int
ticker := time.NewTicker(time.Second * 1) // 运行时长
for {
for x<10{
select {
case <-ticker.C:
x++
fmt.Printf("%d\n", x)
}
}
//ticker.Stop()
}
// 通过通道阻塞,让任务可以执行完指定的次数。
}
timer
- 通过 time.NewTimer() 创建,这种类型,timer只会执行一次,当然,可以在执行完以后通过调用 timer.Reset() 让定时器再次工作,并可以更改时间间隔。
type Timer struct {
C <-chan Time
r runtimeTimer
}
package main
import(
"time"
)
func main() {
t1 := time.NewTimer(time.Second * 5)
t2 := time.NewTimer(time.Second * 10)
for {
select{
case <-t1.C:
println("5s timer")
//t1.Reset(time.Second * 5)
break
case <-t2.C:
println("10s timer")
//重新定时
t2.Reset(time.Second )
}
}
}