032_go语言中的定时器

代码演示
package main

import "fmt"
import "time"

func main() {
	timer1 := time.NewTimer(time.Second * 2)
	<-timer1.C
	fmt.Println("Timer 1 expired")
	timer2 := time.NewTimer(time.Second)
	go func() {
		<-timer2.C
		fmt.Println("Timer 2 expired")
	}()
	stop2 := timer2.Stop()
	if stop2 {
		fmt.Println("Timer 2 stopped")
	}
}

  

代码运行结果

Timer 1 expired
Timer 2 stopped

  

代码解读

  • 定时器表示未来某一时刻的独立事件,我们设置一个等待的时间,然后定时器会提供一个用于通知的通道
  • <-timer1.C会一直阻塞,直到通道C明确的发送了定时器的失效的值
  • 如果只是单纯的等待的话,用time.Sleep就可以,定时器可以在失效之前取消掉
posted @ 2018-04-16 20:12  Joestar  阅读(182)  评论(0编辑  收藏  举报