zoukankan      html  css  js  c++  java
  • go语言从例子开始之Example31.定时器

    我们常常需要在后面一个时刻运行 Go 代码,或者在某段时间间隔内重复运行。

    Go 的内置 定时器 和 打点器 特性让这些很容易实现。我们将先学习定时器,然后再学习打点器

    Example:

    package main
    import "fmt"
    import "time"
    
    
    func main() {
        //定时器表示在未来某一时刻的独立事件。
        //你告诉定时器需要等待的时间,然后它将提供一个用于通知的通道。
        //这里的定时器将等待 2 秒。
        timer1 := time.NewTimer(time.Second * 2)
    
        //<-timer1.C 直到这个定时器的通道 C 明确的发送了定时器失效的值之前,将一直阻塞。
        <- timer1.C
        fmt.Println("Timer 1 expired.")
    
        //如果你需要的仅仅是单纯的等待,你需要使用 time.Sleep。
        //定时器是有用原因之一就是你可以在定时器失效之前,取消这个定时器。这是一个例子
        timer2 := time.NewTimer(time.Second)
        go func(){
            <- timer2.C
            fmt.Println("Timer 2 expired.")
        }()
    
        //停止定时器。
        stop2 := timer2.Stop()
        if stop2{
            fmt.Println("Timer 2 stop.")
        }
    }

    Result:

    $go run example.go
    Timer 1 expired.
    Timer 2 stop.
    第一个定时器将在程序开始后 ~2s 失效,但是第二个在它没失效之前就停止了。

    坐标: 上一个例子 下一个例子


  • 相关阅读:
    Java中的国际化
    springcloud介绍
    SpringMVC之请求和响应
    JAVA坦克大战系列10-高效雷达(下)
    CF920F SUM and REPLACE
    luoguP4141 消失之物
    luoguP2843 暗杀
    luoguP5521 [yLOI2019] 梅深不见冬
    CF940E Cashback
    CF1051D Bicolorings
  • 原文地址:https://www.cnblogs.com/yhleng/p/11757002.html
Copyright © 2011-2022 走看看