zoukankan      html  css  js  c++  java
  • Golang的time.NewTimer单次定时器使用案例

               Golang的time.NewTimer单次定时器使用案例

                                     作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。 

      Timer是一个定时器。代表未来的一个单一事件,你可以告诉timer你要等待多长时间。

    一.通过NewTimer函数定义定时器

    package main
    
    import (
        "fmt"
        "time"
    )
    
    func main() {
    
        //设置定时器为3秒
        timer := time.NewTimer(3 * time.Second)
        fmt.Println("当前时间为:", time.Now())
    
        t := <-timer.C //从定时器拿数据
        fmt.Println("当前时间为:", t)
    }

    二.Sleep函数(阻塞程序运行)

    package main
    
    import (
        "fmt"
        "time"
    )
    
    func main() {
    
        fmt.Println("当前时间为:", time.Now())
    
        time.Sleep(3 * time.Second)
    
        fmt.Println("当前时间为:", time.Now())
    }

    三.重置定时器时间

    package main
    
    import (
        "fmt"
        "time"
    )
    
    func main() {
    
        timer := time.NewTimer(100 * time.Second)
    
        go func() {
            fmt.Println("当前时间为:", time.Now())
    
            t := <-timer.C
    
            fmt.Println("当前时间为:", t)
        }()
    
        //重置定时器时间
        timer.Reset(3 * time.Second)
    
        for {
            time.Sleep(1 * time.Second)
        }
    
    }

    四.停止计时器

    package main
    
    import (
        "fmt"
        "time"
    )
    
    func main() {
    
        timer := time.NewTimer(5 * time.Second)
    
        go func() {
            fmt.Println("当前时间为:", time.Now())
    
            t := <-timer.C
    
            fmt.Println("当前时间为:", t)
        }()
    
        //停止计时器
        timer.Stop()
    
        for {
            time.Sleep(1 * time.Second)
        }
    
    }

    五.After函数实现延迟功能

    package main
    
    import (
        "fmt"
        "time"
    )
    
    func main() {
    
        fmt.Println("当前时间为:", time.Now())
    
        //阻塞2s后产生一个事件,往channel写内容
        <-time.After(3 * time.Second)
    
        fmt.Println("当前时间为:", time.Now())
    
        for {
            time.Sleep(1 * time.Second)
        }
    }

    六.AfterFunc函数

    package main
    
    import (
        "fmt"
        "time"
    )
    
    func main() {
    
        fmt.Println("当前时间为:", time.Now())
    
        //延迟5s后调用函数
        time.AfterFunc(time.Second*5, func() {
            fmt.Println("当前时间为:", time.Now())
            fmt.Println("In AfterFunc ...")
        })
    
        for {
            time.Sleep(1 * time.Second)
        }
    }

  • 相关阅读:
    Jmeter 跨脚本入参
    Jmeter 查看结果树显示unicode转中文
    jmeter+ant 接口自动化测试框架
    jmeter jmeter.results.shanhe.me.xsl 模板内容
    Jmeter + ant 接口自动化测试(进阶)
    Linux od命令
    Hadoop初识
    tbn tbc tbr
    ffmpeg之avcodec_open2
    ffmpeg之AVStream
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/12244385.html
Copyright © 2011-2022 走看看