广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Golangcron定时器和定时任务的使用场景
  • 270
分享到

Golangcron定时器和定时任务的使用场景

2024-04-02 19:04:59 270人浏览 独家记忆
摘要

目录golang cron 定时器和定时任务timer和ticker的区别TimerTickercron 定时任务参考链接:Golang cron 定时器和定时任务 Golang中t

Golang cron 定时器和定时任务

Golang中time包有两个定时器,分别为 ticker 和 timer。两者都可以实现定时功能,但各自都有自己的使用场景。

timer和ticker的区别

  • ticker定时器表示每隔一段时间就执行一次,一般可执行多次。
  • timer定时器表示在一段时间后执行,默认情况下只执行一次,如果想再次执行的话,每次都需要调用 time.Reset() 方法,此时效果类似ticker定时器。同时也可以调用 Stop() 方法取消定时器
  • timer定时器比ticker定时器多一个 Reset() 方法,两者都有 Stop() 方法,表示停止定时器,底层都调用了stopTimer() 函数。

Timer

Timer是一个定时器。代表未来的一个单一事件,你可以告诉timer你要等待多长时间。

package main

import (
    "fmt"
    "time"
)

func main() {

    //设置定时器为3秒
    timer := time.NewTimer(3 * time.Second)
    fmt.Println("当前时间为:", time.Now())

    t := <-timer.C //从定时器拿数据
    fmt.Println("当前时间为:", t)
}

Ticker

Ticker是一个周期触发定时的计时器,它会按照一个时间间隔往channel发送系统当前时间,而channel的接收者可以以固定的时间间隔从channel中读取事件。

Ticker是一个定时触发的计时器,
它会以一个间隔(interval)往channel发送一个事件(当前时间),
而channel的接收者可以以固定的时间间隔从channel中读取事件。

package main

import (
    "fmt"
    "time"
)

func main() {

    //创建一个周期性的定时器
    ticker := time.NewTicker(3 * time.Second)
    fmt.Println("当前时间为:", time.Now())

    go func() {
        for {

            //从定时器中获取数据
            t := <-ticker.C
            fmt.Println("当前时间为:", t)

        }
    }()

    for {
        time.Sleep(time.Second * 1)
    }
}

cron 定时任务

package main

import (
	"GitHub.com/robfig/cron"
	"log"
	"time"
)

func main() {
	//cron1()

	//cron2()

	cron3()

	select {
	}
}

func cron1()  {
	log.Println("Starting...")
	c := cron.New()
	c.AddFunc("* * * * * *", func() {
		log.Println("Run models.CleanAllTag...")
	})
	c.AddFunc("* * * * * *", func() {
		log.Println("Run models.CleanAllArticle...")
	})

	c.Start()

	t1 := time.NewTimer(time.Second * 10)
	for {
	select {
	case <-t1.C:
	    t1.Reset(time.Second * 10)
	}
	}
}

func cron2()  {
	log.Println("Starting...")
	c := cron.New()  // 新建一个定时任务对象
	c.AddFunc("* * * * * *", func() {
		log.Println("hello world")
	})  // 给对象增加定时任务
	c.Start()
	//select {
	//}
	time.Sleep(10 * time.Second)
	c.Stop()
}

func cron3()  {
	log.Println("Starting...")

	c := cron.New()
	h := Hello{"I Love You!"}
	// 添加定时任务
	c.AddJob("*/2 * * * * *", h)
	// 添加定时任务 5秒执行一次
	c.AddFunc("*/5 * * * * *", func() {
		log.Println("hello Word")
	})

	s, err := cron.Parse("*/3 * * * * *")
	if err != nil {
		log.Println("Parse error")
	}
	h2 := Hello{"I Hate You!"}
	c.Schedule(s, h2)
	// 其中任务
	c.Start()
	// 关闭任务
	defer c.Stop()
}

type Hello struct {
	Str string
}

func(h Hello) Run() {
	log.Println(h.Str)
}

参考链接:

https://blog.haohtml.com/arcHives/19859
Https://studygolang.com/articles/17624
https://www.jianshu.com/p/fd3Dda663953
https://blog.51cto.com/u_13914991/2294357
https://www.cnblogs.com/yinzhengjie/p/12244385.html
http://t.zoukankan.com/yinzhengjie-p-12245289.html
https://blog.51cto.com/u_13914991/2294357

到此这篇关于Golang cron 定时器和定时任务的文章就介绍到这了,更多相关Golang cron 定时任务内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: Golangcron定时器和定时任务的使用场景

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Golangcron定时器和定时任务的使用场景
    目录Golang cron 定时器和定时任务timer和ticker的区别TimerTickercron 定时任务参考链接:Golang cron 定时器和定时任务 Golang中t...
    99+
    2022-11-11
  • Java 中Timer和TimerTask 定时器和定时任务使用的例子
    这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求Timer类是用来执行任务的类,它接受一个TimerTask做参数Timer有两种执行任务的模式,最常用的是schedule,它可以以两种方式执行任务:1:在某个时间(Data),...
    99+
    2023-05-31
    timertask 定时器 tim
  • 队列的延迟任务和定时任务在PHP与MySQL中的应用场景
    引言:随着互联网的发展,对于实时性和高并发的需求越来越高,为了应对这些需求,我们常常需要使用到队列的延迟任务和定时任务。本文将重点介绍在PHP和MySQL中,如何应用队列的延迟任务和定时任务,并给出具体的代码示例。一、队列的延迟任务的应用场...
    99+
    2023-10-21
    MySQL PHP 队列 定时任务 延迟任务
  • Linux下的定时任务和延时任务的详解
    at at + time at 17:23 at> touch /mnt/file{1..9} ##延迟动作 at> 键入ctrl+d ##表示发起动作 at -l | atq ##查看当前任务 ...
    99+
    2022-06-04
    Linux定时任务和延时任务 Linux定时任务 Linux延时任务
  • JavaScript 定时器关键点及使用场景解析
    目录正文关于计时器的关键点异步函数setTimeoutsetInterval区别使用场合总结正文 JavaScript 定时器是实现循环行为甚至触发延迟操作的好功能。无论有什么基于...
    99+
    2023-01-30
    JavaScript 定时器 JavaScript 定时器场景
  • SpringBoot2如何使用定时任务和异步任务
    这篇文章给大家分享的是有关SpringBoot2如何使用定时任务和异步任务的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、定时任务1、基本概念按照指定时间执行的程序。2、使用场景数据分析数据清理系统服务监控二、...
    99+
    2023-06-02
  • SpringBoot定时任务怎么使用
    在Spring Boot中使用定时任务,可以按照以下步骤进行操作:1. 在pom.xml文件中添加Spring Boot的定时任务依...
    99+
    2023-08-15
    SpringBoot
  • laravel定时任务怎么使用
    这篇“laravel定时任务怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“laravel定时任务怎么使用”文章吧。应...
    99+
    2023-06-30
  • spring定时器定时任务到时间未执行问题的解决
    目录spring定时器定时任务到时间未执行应用场景原因分析解决方式解决修改系统时间后Spring 定时任务不执行问题描述起因错误解决问题spring定时器定时任务到时间未执行 应用场...
    99+
    2022-11-12
  • Spring-Task定时任务的使用介绍
    目录一、基本使用二、@Scheduled属性详解1. cron2. zone3. fixedDelay4. fixedDelayString5. fixedRate6. fixedR...
    99+
    2022-11-13
    Spring Task定时任务使用 Spring Task 定时任务 Spring Task
  • SpringBoot中怎么使用定时任务
    本篇文章为大家展示了SpringBoot中怎么使用定时任务,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. 线程实现利用线程可以设定休眠时间的方式可以实现简单的定时任务逻辑。  ...
    99+
    2023-06-02
  • linux cron定时任务怎么使用
    在Linux中,Cron是一个用于在预定时间自动执行任务的工具。Cron通过使用Cron表达式来指定任务的执行时间。要使用Cron定时任务,请按照以下步骤进行操作:1. 使用以下命令打开Cron表达式配置文件:```crontab -e...
    99+
    2023-08-11
    linux cron
  • python定时任务apscheduler如何使用
    这篇文章主要介绍了python定时任务apscheduler如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python定时任务apscheduler如何使用文章都会有所收获,下面我们一起来看看吧。安装p...
    99+
    2023-06-29
  • Spring Task定时任务的配置和使用详解
    记录下Spring自带的定时任务用法。spring中使用定时任务基于xml配置文件使用定时任务首先配置spring开启定时任务<beans xmlns="http://www.springframework.org/schema/be...
    99+
    2023-05-31
    spring task
  • PHP中的定时任务和计划任务技术
    在PHP中,有两种常见的定时任务和计划任务技术:使用Cron调度和使用操作系统级别的任务调度。1. 使用Cron调度:Cron是一个...
    99+
    2023-08-24
    PHP
  • 在springboot中使用定时任务的方式
    本篇内容介绍了“在springboot中使用定时任务的方式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!springboot定时任务在spr...
    99+
    2023-06-20
  • Django定时任务Django-crontab的使用详解
    在使用的django做测试平台时,,多多少少都会遇到需要定时任务的功能,比如定时执行任务,检查订单之类的。可能是一段时间,比如每隔 10分钟执行一次,也可能是定点时间,比如 14:0...
    99+
    2022-11-11
  • Python使用定时调度任务的方式
    目录1、简单循环 Simple loops2、简单循环但是使用了线程Simple loops but threaded3、定时调度库 Schedule Library4、Python...
    99+
    2022-11-12
  • 详解定时任务框架Quartz的使用
    目录一、什么是Quartz二、Quartz Demo搭建三、Quartz核心详解一、什么是Quartz 什么是Quartz Quartz是OpenSymphony开源组织在Job s...
    99+
    2023-02-13
    定时任务框架Quartz使用 定时任务框架Quartz
  • Python定时任务的启动和停止
    在python中我们可以使用APScheduler进行定时任务。 APScheduler的具体编码这里就不介绍了。主要说下在终端中启动和停止任务。 一、运行计划任务的python脚本 如果我们在终端中直接执行的话,关闭终端窗...
    99+
    2023-01-31
    Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作