码农后生

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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 )
		   }
    }
}
posted on 2020-11-16 14:37  码农后生  阅读(148)  评论(0编辑  收藏  举报