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

  • 相关阅读:
    docker 实践七:docker-machine
    docker 实践六:dockerfile 详解
    docker 实践五:端口映射和容器互联
    docker 实践四:数据管理
    利用onerror将页面异常图片替换成随即图
    checkbox绑定v-for的数据
    iphone在jsp显示时间会NAN解决办法
    html5文本超过指定行数隐藏显示省略号
    使用vue做移动端瀑布流分页
    java导入Excel表格数据
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/12244385.html
Copyright © 2020-2023  润新知