golang -几种定时器的使用-后续跟进具体信息

package main

import (
	"fmt"
	"time"
)

func main() {
	/**
	* NewTimer 可以指定定时时间,
	* 可以重置定时时间,例如业务第一次重试是5s,但二次重试是10秒
	* 记得用完停止定时器
	 */
	timer := time.NewTimer(5 * time.Second)
	fmt.Println(<-timer.C) //2020-11-25 10:55:11.243245 +0800 CST m=+5.001232107
	//timer.Reset() //重置定时器
	timer.Stop() //停止定时器

	/**
	* NewTicker
	* 结果
	* 2020-11-25 10:55:16.244135 +0800 CST m=+10.002109076
	* 2020-11-25 10:55:21.245859 +0800 CST m=+15.003820012
	* 2020-11-25 10:55:26.249302 +0800 CST m=+20.007250152

	 */
	tiker := time.NewTicker(5 * time.Second)
	for i := 0; i < 3; i++ {
		fmt.Println(<-tiker.C) //
	}
	tiker.Stop()

	/**
	* After 几秒后执行
	* 可以结合sleep一起实现
	* 结果 timeout
	 */
	ch := make(chan string)
	go func() {
		time.Sleep(time.Second * 6)

		ch <- "result"
	}()

	select {
	case res := <-ch:
		fmt.Println(res)
	case <-time.After(time.Second * 5):
		fmt.Println("timeout")
	}

	/**
	* AfterFunc 是指从现在实现开始的几秒后执行事务
	* 结果每隔5s 输出
	* done
	* done
	* done
	 */
	for i := 0; i < 3; i++ {
		is := time.Duration(i)
		time.AfterFunc(is*5*time.Second, func() {
			fmt.Println("done")
		})

	}

	fmt.Println("end")

	time.Sleep(50 * time.Second)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a...Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值