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

  • 相关阅读:
    iOS系统中XML&JSON解析的代码实现
    ViewController之间如何传值
    如何归档自定义对象的数组
    一个小问题
    阶段性总结
    c语言以二进制的方式向文件读写一组数据
    C语言复杂声明,指针的复杂用法
    C语言中的getchar和putchar
    C语言结构体
    常量指针 和 指针常量
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/12244385.html
Copyright © 2011-2022 走看看