go 定时任务timer和定时间隔任务ticker的使用

 基础语法  2022-06-04  admin  873  1178

go  定时任务timer和定时间隔任务ticker的使用

Timer类型代表单次时间事件。当Timer到期时,当时的时间会被发送给C

Ticker类型代表多次时间事件。

func main() {
	log.Println(time.Now())
	t2 := time.NewTimer(time.Millisecond * 3000)
	<-t2.C
	log.Println(time.Now())
}
func main() {
	for range time.Tick(time.Second * 1) {
		log.Println(time.Now())
	}
}

使用timer实现随机间隔事件

package main

import (
	"log"
	"math/rand"
	"time"
)

func main() {
	t := time.NewTimer(time.Millisecond * 1000)
	for {
		<-t.C
		n := 2 + rand.Intn(3)
		log.Println(n)
		log.Println(time.Now())
		t.Reset(time.Duration(n) * time.Second)
	}
}
package main

import (
	"log"
	"strconv"
	"time"
)

func main() {
	log.Println("开始...")
	timer := time.NewTimer(time.Millisecond * 2000)
	for i := 1; ; i++ {
		<-timer.C
		log.Println("Ticker..." + strconv.Itoa(i) + "...")

		if i >= 5 {
			// 需要重置Reset 使t重新开始计时
			timer.Reset(time.Second * 3)
		} else {
			timer.Reset(time.Millisecond * 1000)
		}
		if i >= 10 {
			timer.Stop()
			break
		}
	}
}
2022/06/04 09:24:50 开始...
2022/06/04 09:24:53 Ticker...1...
2022/06/04 09:24:54 Ticker...2...
2022/06/04 09:24:55 Ticker...3...
2022/06/04 09:24:56 Ticker...4...
2022/06/04 09:24:57 Ticker...5...
2022/06/04 09:25:00 Ticker...6...
2022/06/04 09:25:03 Ticker...7...
2022/06/04 09:25:06 Ticker...8...
2022/06/04 09:25:09 Ticker...9...
2022/06/04 09:25:12 Ticker...10...


如果文章对您有帮助,点击下方的广告,支持一下作者吧!

相关推荐


go Ticker 间隔时钟定时器用法

go Ticker 间隔时钟定时器用法

Go time包时间的常用方法

Go time包时间的常用方法,时间戳,时间格式化,时间计算

crontab 定时任务

crontab 定时任务

HTTP的Header消息头详解

HTTP消息头是指,在超文本传输协议( Hypertext Transfer Protocol ,HTTP)的请求和响应消息中,协议头部分的那些组件。HTTP消息头用来准确描述正在获取的资源、服务器或者客户端的行为,定义了HTTP事务中的具体操作参数。1. 关于HTTP消息头HTTP消息头是在,客户端请求(Request)或服务器响应(Response)时传递的,位请求或响应的第一行,HTTP消息