定时器"/>
Go语言定时器
包括一次性定时器(Timer)和周期性定时器(Ticker),一次性定时器:newTimer()创建一个能够往当前通道在持续duration时间之后发送当前时间的Timer:
package mainimport ("fmt""time"
)func main() {//1. timer基本使用timer1 := time.NewTimer(4 * time.Second)t1 := time.Now()fmt.Printf("t1:%v\n", t1)t2 := <-timer1.Cfmt.Printf("t2:%v\n", t2)fmt.Println("2s到了")//2. timer只能响应1次, 到截止时间会将时间发给通道//timer2 := time.NewTimer(time.Second)//for {// <-timer2.C// fmt.Println("时间到", t2)//}// 3.timer实现延时的功能time.Sleep(time.Second)fmt.Println(time.Now())timer3 := time.NewTimer(2 * time.Second)<-timer3.Cfmt.Println("2秒到了")fmt.Println(time.Now())<-time.After(2 * time.Second)fmt.Println("2秒到了")// 4.停止定时器timer4 := time.NewTimer(4 * time.Second)b := timer4.Stop()if b {fmt.Println("timer4关闭")}// 5.重置定时器timer5 := time.NewTimer(5 * time.Second)timer5.Reset(3 * time.Second)fmt.Println(time.Now())fmt.Println(<-timer5.C)time.Sleep(time.Second * 30)
}
Tiker是一个定时触发的计时器,它会以一个间隔(interval)往通道发送当前时间,而通道的接收者可以以固定的时间间隔从通道中读取时间:
package mainimport ("fmt""time"
)func main() {// 1.获取ticker对象ticker := time.NewTicker(2 * time.Second)i := 0// 子协程go func() {for {i++fmt.Println(<-ticker.C)if i == 4 {//停止tickerticker.Stop()}}}()time.Sleep(time.Second * 20)
}
更多推荐
Go语言定时器
发布评论