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)
        }
    }

  • 相关阅读:
    WordCount的程序设计没写出来怎么办
    小程序分析
    程序单元测试
    Visual studio 2013安装
    四则运算源代码
    在VC环境下执行代码出现错误
    微点评微信软件
    软件工程学习
    查找抄袭文章
    软件附加题简答
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/12244385.html
Copyright © 2011-2022 走看看