Time包详解二-timer和ticket.html

timer 计时器

用于在指定的Duration类型时间后调用函数或计算表达式。

  • 如果只是想指定时间之后执行,使用time.Sleep()
  • 使用NewTimer(),可以返回的Timer类型在计时器到期之前,取消该计时器
  • 直到使用<-timer.C发送一个值,该计时器才会过期
timer1 := time.NewTimer(time.Second * 2)

ticker 断续器

按照指定的周期来调用函数或计算表达式。

  • 通常会使用go新开一个线程,否则会

使用时间控制停止ticker

	ticker := time.NewTicker(time.Millisecond * 500)

    go func() {

        for t := range ticker.C {

            fmt.Println("Tick at", t)

        }

    }()



	time.Sleep(time.Millisecond * 1500)   //阻塞

    ticker.Stop()     

    fmt.Println("Ticker stopped")

使用channel控制停止ticker

ticker := time.NewTicker(time.Millisecond * 500)

	c := make(chan int)

	go func() {

		i := 0

		for t := range ticker.C {

			fmt.Println("Tick at", t)

			i++

			if i == 3 {

				ticker.Stop()

				break

			}

		}

		c

不开新线程..

func main() {

	ticker := time.NewTicker(time.Millisecond * 500)



	i := 0

	for t := range ticker.C {       //无限循环,直到break

		fmt.Println("Tick at", t)

		i++

		if i == 3 {

			ticker.Stop()

			break

		}

	}



	fmt.Println("Ticker stopped")

}

你可能感兴趣的:(timer)