返回顶部
首页 > 资讯 > 后端开发 > GO >golang定时任务time.Sleep和time.Tick如何实现
  • 876
分享到

golang定时任务time.Sleep和time.Tick如何实现

2023-06-29 06:06:20 876人浏览 安东尼
摘要

这篇文章主要介绍“golang定时任务time.Sleep和time.Tick如何实现”,在日常操作中,相信很多人在Golang定时任务time.Sleep和time.Tick如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作

这篇文章主要介绍“golang定时任务time.Sleep和time.Tick如何实现”,在日常操作中,相信很多人在Golang定时任务time.Sleep和time.Tick如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”golang定时任务time.Sleep和time.Tick如何实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

总的来说

  • Sleep是使用睡眠完成定时,结束后继续往下执行循环来实现定时任务。

  • Tick函数是使用channel阻塞当前协程,完成定时任务的执行

现在来看一下 两种方法实现出来的效果有何不同

这里我们设置定时时长为5

使用“Do Something” 来模拟定时任务执行需要的时间 分1s执行,10s执行两种情况

代码如下

func Test_Sleep(t *testing.T) {    for i := 0; i < 3; i++ {        Debug("begin", time.Now().FORMat("2006-01-02_15:04:05"))        Debug("Do something 1s")        time.Sleep(time.Second * 1)        Debug("end", time.Now().Format("2006-01-02_15:04:05"))        time.Sleep(time.Second * 5)    }}func Test_Tick(t *testing.T) {    t1 := time.NewTicker(5 * time.Second)(5 * time.Second)    for {        select {        case <-t1.C:            Debug("begin", time.Now().Format("2006-01-02_15:04:05"))            Debug("Do something 1s")            time.Sleep(time.Second * 1)            Debug("end", time.Now().Format("2006-01-02_15:04:05"))        }    }}

Sleep结果1:

2019/04/19 15:58:51 |DEBUG|Test_Sleep()|77|begin 2019-04-19_15:58:51
2019/04/19 15:58:51 |DEBUG|Test_Sleep()|78|Do something 1s
2019/04/19 15:58:52 |DEBUG|Test_Sleep()|80|end 2019-04-19_15:58:52
2019/04/19 15:58:57 |DEBUG|Test_Sleep()|77|begin 2019-04-19_15:58:57
2019/04/19 15:58:57 |DEBUG|Test_Sleep()|78|Do something 1s
2019/04/19 15:58:58 |DEBUG|Test_Sleep()|80|end 2019-04-19_15:58:58
2019/04/19 15:59:03 |DEBUG|Test_Sleep()|77|begin 2019-04-19_15:59:03
2019/04/19 15:59:03 |DEBUG|Test_Sleep()|78|Do something 1s
2019/04/19 15:59:04 |DEBUG|Test_Sleep()|80|end 2019-04-19_15:59:04

设置任务执行时间为1s
end到下一次begin之间的间隔为5s (定时间隔)
其过程大致为:
|DO&ndash;>|Sleep---------->|Do&ndash;>|Sleep---------->|

Trick结果1

2019/04/19 16:22:09 |DEBUG|Test_Trick()|90|begin 2019-04-19_16:22:09
2019/04/19 16:22:09 |DEBUG|Test_Trick()|91|Do something 1s
2019/04/19 16:22:10 |DEBUG|Test_Trick()|93|end 2019-04-19_16:22:10
2019/04/19 16:22:14 |DEBUG|Test_Trick()|90|begin 2019-04-19_16:22:14
2019/04/19 16:22:14 |DEBUG|Test_Trick()|91|Do something 1s
2019/04/19 16:22:15 |DEBUG|Test_Trick()|93|end 2019-04-19_16:22:15
2019/04/19 16:22:19 |DEBUG|Test_Trick()|90|begin 2019-04-19_16:22:19
2019/04/19 16:22:19 |DEBUG|Test_Trick()|91|Do something 1s
2019/04/19 16:22:20 |DEBUG|Test_Trick()|93|end 2019-04-19_16:22:20

设置任务执行时间为1s
end到下一次begin之间的间隔为4s (定时间隔-任务执行时间)
其过程大致为:
(begin)Do&ndash;>(end)
|DO&ndash;>-----------|Do&ndash;>-------------|
|Sleep---------->|Sleep---------->|

Sleep结果2:

2019/04/19 16:32:41 |DEBUG|Test_Sleep()|77|begin 2019-04-19_16:32:41
2019/04/19 16:32:41 |DEBUG|Test_Sleep()|78|Do something 10s
2019/04/19 16:32:51 |DEBUG|Test_Sleep()|80|end 2019-04-19_16:32:51
2019/04/19 16:32:56 |DEBUG|Test_Sleep()|77|begin 2019-04-19_16:32:56
2019/04/19 16:32:56 |DEBUG|Test_Sleep()|78|Do something 10s
2019/04/19 16:33:06 |DEBUG|Test_Sleep()|80|end 2019-04-19_16:33:06

设置任务执行时间为10s
end到下一次begin之间的间隔为5s (定时间隔)
其过程大致为:
|DO-------------------->|Sleep---------->|Do-------------------->|Sleep---------->|

Trick结果2

2019/04/19 16:41:05 |DEBUG|Test_Tick()|90|begin 2019-04-19_16:41:05
2019/04/19 16:41:05 |DEBUG|Test_Tick()|91|Do something 10s
2019/04/19 16:41:15 |DEBUG|Test_Tick()|93|end 2019-04-19_16:41:15
2019/04/19 16:41:15 |DEBUG|Test_Tick()|90|begin 2019-04-19_16:41:15
2019/04/19 16:41:15 |DEBUG|Test_Tick()|91|Do something 10s
2019/04/19 16:41:25 |DEBUG|Test_Tick()|93|end 2019-04-19_16:41:25

设置任务执行时间为10s
end到下一次begin之间的间隔为0s
此时因为任务执行时间大于定时间隔 当任务执行完毕时 已经没有阻塞 所以可以立马执行下一次
其过程大致为:
(begin)Do&ndash;>(end)
|DO-------------------->|Do----------------------->|
|Sleep---------->-------|Sleep---------->---------|

到此,关于“golang定时任务time.Sleep和time.Tick如何实现”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: golang定时任务time.Sleep和time.Tick如何实现

本文链接: https://lsjlt.com/news/323002.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • golang定时任务time.Sleep和time.Tick如何实现
    这篇文章主要介绍“golang定时任务time.Sleep和time.Tick如何实现”,在日常操作中,相信很多人在golang定时任务time.Sleep和time.Tick如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作...
    99+
    2023-06-29
  • 详解golang定时任务time.Sleep和time.Tick实现结果比较
    总的来说 Sleep是使用睡眠完成定时,结束后继续往下执行循环来实现定时任务。Tick函数是使用channel阻塞当前协程,完成定时任务的执行 现在来看一下 两种方法实现出来的效果有...
    99+
    2024-04-02
  • golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
    golang 写循环执行的定时任务,常见的有以下三种实现方式 1、time.Sleep方法: for { time.Sleep(time.Second) fmt.Pr...
    99+
    2024-04-02
  • golang如何实现延时任务
    这篇文章主要讲解了“golang如何实现延时任务”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“golang如何实现延时任务”吧!实现思路我们都知道,任何一种队列,实际上都是存在生产者和消费者...
    99+
    2023-07-05
  • golang延时任务如何实现
    这篇文章主要介绍“golang延时任务如何实现”,在日常操作中,相信很多人在golang延时任务如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”golang延时任务如何实现”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-05
  • redis如何实现定时任务
    这篇文章将为大家详细讲解有关redis如何实现定时任务,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。技术栈redis / nodeJs / koa技术重难点开启redis...
    99+
    2024-04-02
  • Springboot如何实现定时任务
    这篇文章给大家分享的是有关Springboot如何实现定时任务的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。定时任务此处的定时,标注在方法上+注解,假如想修改生成环境的时间,不是很灵活,后面补充Quartz+bo...
    99+
    2023-06-17
  • php如何实现定时任务
    这篇文章将为大家详细讲解有关php如何实现定时任务,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php实现定时任务的方法:首先新建一个php文件;然后使用ignore_user_abort方法设置程序在浏...
    99+
    2023-06-15
  • swoole如何实现定时任务
    这篇文章主要为大家展示了“swoole如何实现定时任务”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“swoole如何实现定时任务”这篇文章吧。方法:1、利用“swoole_timer_after...
    99+
    2023-06-29
  • Java如何实现定时任务
    今天小编给大家分享一下Java如何实现定时任务的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、TimerTimer是JAV...
    99+
    2023-07-02
  • node如何实现定时任务
    这篇文章主要介绍“node如何实现定时任务”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“node如何实现定时任务”文章能帮助大家解决问题。node实现定时任务的方法:1、利用setTimeOut和e...
    99+
    2023-07-04
  • Python3中如何实现定时任务
    这篇文章给大家介绍Python3中如何实现定时任务,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1>定时更新微信token,需要2小时更新一次;2>商品定时上线;3>定时检测后台服务是否存活;使用Py...
    99+
    2023-06-02
  • php redis如何实现定时任务
    这篇文章主要介绍“php redis如何实现定时任务”,在日常操作中,相信很多人在php redis如何实现定时任务问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php redis如何实现定时任务”的疑惑有所...
    99+
    2023-07-04
  • 如何在PHP项目中实现定时任务和计划任务?
    如何在PHP项目中实现定时任务和计划任务?在开发一个PHP项目时,有时候需要执行一些定时任务或者计划任务。这些任务可能包括发送邮件、清理临时文件、生成报表等等。本文将介绍如何使用PHP来实现这些定时任务和计划任务。使用Crontab定时器C...
    99+
    2023-11-03
    PHP定时任务 PHP计划任务 项目中实现
  • SpringBoot动态定时任务如何实现
    这篇文章主要介绍了SpringBoot动态定时任务如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot动态定时任务如何实现文章都会有所收获,下面我们一起来看看吧。 执行定时任务的...
    99+
    2023-07-05
  • 如何在PHP中实现定时任务
    在现代的Web应用程序中,定时任务是至关重要的一环。它们可以帮助您在合适的时间自动化任务,如备份数据库,生成报告等。在PHP中实现定时任务是一件非常简单,可靠的任务,在本文中我们将介绍如何实现这一目标。在PHP中实现定时任务的第一步是创建一...
    99+
    2023-05-21
    PHP定时任务 时间计划任务 计划执行任务
  • springboot定时任务和异步任务怎么实现
    这篇文章主要介绍“springboot定时任务和异步任务怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot定时任务和异步任务怎么实现”文章能帮助大家解决问题。异步任务简单案例...
    99+
    2023-06-27
  • Golang实现CronJob(定时任务)的方法详解
    目录引言类库介绍扩展性强主流程类库改造打印任务列表信息根据名称移除脚本改造效果引言 最近做了一个需求,是定时任务相关的。以前定时任务都是通过 linux crontab 去实现的,现...
    99+
    2023-05-14
    Golang实现定时任务 Golang定时任务 Golang CronJob
  • Python实现定时任务
    Python下实现定时任务的方式有很多种方式。下面介绍几种 循环sleep: 这是一种最简单的方式,在循环里放入要执行的任务,然后sleep一段时间再执行。缺点是,不容易控制,而且sleep是个阻塞函数。...
    99+
    2022-06-04
    Python
  • Java实现定时任务
    本文实例为大家分享了Java实现定时任务的具体代码,供大家参考,具体内容如下 1 使用java.util.Timer 这种方式的定时任务主要用到两个类,Timer 和 TimerTa...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作