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

  • 相关阅读:
    数据库中Schema(模式)概念的理解
    git错误处理
    mysql存储过程
    bunyan
    golang 小问题
    操作系统
    数据库优化
    内存控制
    MySQL优化2
    mysql优化1
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/12244385.html
Copyright © 2020-2023  润新知