golang入门系列-八怎样实现定时任务,极简版.(代码片段)

author author     2023-04-04     471

关键词:

感谢平台分享-http://bjbsair.com/2020-04-10/tech-info/53303.html

前面讲介绍了Go 语言的基础入门及Golang的语法结构。同时也介绍Golang的接口及协程等内容。感兴趣的朋友可以先看看之前的文章。接下来说一说Golang 如何实现定时任务。

golang 实现定时服务很简单,只需要简单几步代码便可以完成,不需要配置繁琐的服务器,直接在代码中实现。

1、使用的包

github.com/robfig/cron

2、示例

1、创建最简单的最简单cron任务

package main  

import (  
   "github.com/robfig/cron"  
   "fmt"  
)  

func main()   
   i := 0  
   c := cron.New()  
   spec := "*/5 * * * * ?"  
   c.AddFunc(spec, func()   
      i++  
      fmt.Println("cron running:", i)  
   )  
   c.Start()  

   select  

启动后输出如下:

D:Go_Pathgosrccronjob>go run multijob.go  
cron running: 1  
testJob1...  
testJob2...  
testJob1...  
cron running: 2  
testJob2...  
testJob1...  
testJob2...  
cron running: 3  
cron running: 4  
testJob1...  
testJob2...

2、多个定时cron任务

package main  

import (  
    "github.com/robfig/cron"  
    "fmt"  
    )  

type TestJob struct   
  

func (this TestJob)Run()   
    fmt.Println("testJob1...")  
  

type Test2Job struct   
  

func (this Test2Job)Run()   
    fmt.Println("testJob2...")  
  

//启动多个任务  
func main()   
    i := 0  
    c := cron.New()  

    //AddFunc  
    spec := "*/5 * * * * ?"  
    c.AddFunc(spec, func()   
        i++  
        fmt.Println("cron running:", i)  
    )  

    //AddJob方法  
    c.AddJob(spec, TestJob)  
    c.AddJob(spec, Test2Job)  

    //启动计划任务  
    c.Start()  

    //关闭着计划任务, 但是不能关闭已经在执行中的任务.  
    defer c.Stop()  

    select  

启动后输出如下:

D:Go_Pathgosrccronjob>go run multijob.go  
cron running: 1  
testJob1...  
testJob2...  
testJob1...  
cron running: 2  
testJob2...  
testJob1...  
testJob2...  
cron running: 3  
cron running: 4  
testJob1...  
testJob2...

3、cron 表达式

4、最后

以上,就将Golang中如何创建定时任务做了简单介绍,实际使用中,大家可以可结合配置需要定时执行的任务。

springboot入门系列如何实现异步执行任务

前面介绍了SpringBoot如何整合定时任务,不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html。今天主要讲解SpringBoot中的另外一个任务:异步任务。所谓异步任务,其实就是异步执行程序,有些时候... 查看详情

springboot入门:集成quartz定时任务

本片文章续《SpringBoot入门(八):集成RabbitMQ消息队列》,关于Quartz定时任务请参考《Quartz的基本使用之入门(2.3.0版本)》springboot实现定时任务,除了集成Quartz外,还可以直接使用scheduler注解。使用1个简单的注解就可以完成... 查看详情

八定时任务调度

...务crontab-l查询crontab任务crontab-r删除所有的crontab任务快速入门设置任务调度文件:/etc/cr 查看详情

stm32f103五分钟入门系列定时器中断(代码片段)

...中断(+数码管—24小时制钟表)STM32F103五分钟入门系列(八)SysTick滴答定时器+SysTick中断实现跑马灯STM32F103五分钟入门系列(十)NVIC中断优先级管 查看详情

五.rocketmq极简入门-rocketmq延迟消息(代码片段)

使用场景我们通常使用定时任务比如Quartz来解决超时业务,比如:订单支付超时关单,VIP会员超时提醒。但是使用定时任务来处理这些业务场景在数据量大的时候并不是一个很好的选择,会造成大量的空扫描浪费... 查看详情

golang定时任务简单实现(代码片段)

下载cron包:gogetgithub.com/robfig/cron开启一个定时:根据cron表达式进行时间调度,cron可以精确到秒,大部分表达式格式也是从秒开始。c:=cron.New()默认从分开始,所以加上cron.WithSeconds(),保证定时按照表达式字面意思执行。funcmain()c... 查看详情

八.rocketmq极简入门-在springboot中使用rocketmq(代码片段)

前言现在开发项目都是基于SpringBoot,新项目很少使用Spring,所以我们学习一门技术除了要会原生API,还不得不考虑和SpringBoot集成,本篇文章为SpirngBoot整合RocketMQ案例SpringBoot集成RocketMQ导入依赖这里使用整合RocketMQ... 查看详情

springboot入门定时任务

本文记录在SpringBoot中使用定时任务。  在我们的项目中,经常需要用到定时任务去帮我们做一些事情,比如服务状态监控,业务数据状态的更改等,SpringBoot中实现定时任务有2中方案,一种是自带的,我们只需要加上注解即可... 查看详情

重学springboot系列之异步任务与定时任务(代码片段)

重学SpringBoot系列之异步任务与定时任务实现Async异步任务环境准备同步调用异步调用异步回调为异步任务规划线程池SpringBoot任务线程池自定义线程池优雅地关闭线程池通过@Scheduled实现定时任务开启定时任务方法不同定时方式... 查看详情

小白入门springboot极简教程开篇(代码片段)

小白入门SpringBoot极简教程开篇前言小白入门SpringBoot极简教程前言SpringBoot也使用了很长一段时间了,最初接触SpringBoot都是一边做项目一边查资料,没有系统的学习和整理过。这也是为什么会有这个系列–小白入门SpringBoot... 查看详情

springboot入门极简教程开篇(代码片段)

SpringBoot入门极简教程开篇前言SpringBoot入门极简教程前言SpringBoot也使用了很长一段时间了,最初接触SpringBoot都是一边做项目一边查资料,没有系统的学习和整理过。这也是为什么会有这个系列–SpringBoot入门极简教程。本... 查看详情

simplethreadpool极简版(代码片段)

...tjava.util.ArrayList;importjava.util.LinkedList;importjava.util.List;/***1.任务队列--调度2.拒绝策略(抛出异常、直接丢弃、阻塞、临时队列)--性能保护3.init(min)4.active5.max*min<=active<=maxQuartz/Control-M*/publicclassSimpleThreadPoolprivatefinalintsize;privatef... 查看详情

wpf入门教程系列八——布局之grid与uniformgrid

五. GridGrid顾名思义就是“网格”,它的子控件被放在一个一个实现定义好的小格子里面,整齐配列。 Grid和其他各个Panel比较起来,功能最多也最为复杂。要使用Grid,首先要向RowDefinitions和ColumnDefinitions属性中添加一定数... 查看详情

atm管理系统(极简版)(代码片段)

...、存款、取款、转账、余额查询功能);2.该系统用C语言实现。二、ATM系统模块化代码头文件&全局变量#include<stdio.h>#include<stdlib.h>#include<string.h>#include<malloc.h>#include<math.h>函 查看详情

linux极简入门系列:其它补充(代码片段)

Linux极简入门系统目录:1、系统安装和配置(VMware/CentOS、WSL/ubuntu)2、Linux的目录结构和常用操作3、vim文本编辑器4、用户和文件权限5、软件和服务管理6、其它补充   一、主机状态监控1、主机状态监控类似于windows的任务管理... 查看详情

flowable入门系列文章49-骡子任务(代码片段)

mule任务允许你发送消息给mule,增强了Flowable的集成功能。请注意,Mule任务不是BPMN2.0规范的正式任务(因此没有专门的图标)。因此,在Flowable中,mule任务被实现为一个专门的服务任务。1、定义一个骡子... 查看详情

flowable入门系列文章53-壳任务(代码片段)

1、描述Shell任务允许您运行shell脚本和命令。请注意,Shell任务不是BPMN2.0规范的正式任务。2、定义一个Shell任务Shell任务是作为一个专用的服务任务来实现的,通过为服务任务的类型设置’shell’来定义。<serviceTaskid=&... 查看详情

uipath入门系列八之selectors

今日更新的主题是UIPath的Selectors,选择器一、Selectors的简介大多数RPA产品都是依靠UI元素的屏幕位置来完成的,但屏幕位置往往会出现定位失败,UIPath的Selectors选择器解决了这个问题。二、Selectors的三种识别方法1)默认为default... 查看详情