当前位置: 首页 > article >正文

【go】延迟执行和定时器实现

目录

time.Sleep

time.After

time.NewTimer

time.NewTicker


time.Sleep

time.Sleep可以实现延时执行

func TestSleep(t *testing.T) {
	fmt.Println("start time:", time.Now().Format("2006-01-02 15:04:05.000"))

	time.Sleep(2 * time.Second)

	fmt.Println("end   time:", time.Now().Format("2006-01-02 15:04:05.000"))
}

time.After

time.After也可以实现延迟执行。返回一个只读的time.Time类型的channel,读取到的是延迟后的当前时间

func TestAfter(t *testing.T) {
	fmt.Println("start time:", time.Now().Format("2006-01-02 15:04:05.000"))

	var timer <-chan time.Time = time.After(2 * time.Second)
	now := <-timer

	fmt.Println("end   time:", now.Format("2006-01-02 15:04:05.000"))
}

time.NewTimer

time.NewTimer可以实现延迟执行,并且还提供了重置延迟时间的接口实现定时器。timer.C返回的是一个只读的time.Time类型的channel,读取到的是延迟后的当前时间

func TestTimer(t *testing.T) {
	fmt.Println("start time:", time.Now().Format("2006-01-02 15:04:05.000"))

	var timer *time.Timer = time.NewTimer(2 * time.Second)

	for now := range timer.C {
		timer.Reset(3 * time.Second)
		fmt.Println("now   time:", now.Format("2006-01-02 15:04:05.000"))
	}
}

time.NewTicker

time.NewTicker直接实现了定时器。

func TestTicker(t *testing.T) {
	fmt.Println("start time:", time.Now().Format("2006-01-02 15:04:05.000"))

	ticker := time.NewTicker(2 * time.Second)

	for now := range ticker.C {
		fmt.Println("now   time:", now.Format("2006-01-02 15:04:05.000"))
	}
}


http://www.kler.cn/a/229079.html

相关文章:

  • 简明docker快速入门并实践方法
  • 关于 Cursor 的一些学习记录
  • salesforce在opportunity的opportunity products页面增加一个按钮,可以批量删除products
  • Linux:认识Shell、Linux用户和权限
  • AIGC时代 | 探索AI Agent的奥秘:四种设计模式引领未来智能趋势
  • 传统摄像头普通形态的系统连接方式
  • 非springboot 使用aop 切面
  • HBase相关面试准备问题
  • mysql8通过binlog恢复数据
  • OpenGL 入门(九)—Material(材质)和 光照贴图
  • AS-V1000 视频监控平台产品介绍:客户端功能介绍(二)
  • 算法练习-二叉树的层序遍历(思路+流程图+代码)
  • Docker进阶篇-轻量级可视化工具Portainer
  • 力扣:131. 分割回文串
  • langgraph学习--创建基本的agent执行器
  • 汽车信息安全--SHE中的密钥管理(一)
  • setState的参数
  • 2 月 5 日算法练习- 字符串
  • easyexcel解析跨多行的数据
  • Linux 【docker系列1 - docker 安装与使用】
  • 解决hive表新增的字段查询为空null问题
  • 2.5 作业
  • 从 AGP 4.1.2 升级到 7.5.1——动态添加仓库
  • 【Java】小白友好的MyBatis基础XML开发学习笔记
  • 什么是Java中的弱引用(Weak Reference)和软引用(Soft Reference)?
  • 【漏洞复现】大华智慧园区综合管理平台bitmap接口存在任意文件上传漏洞