golang 定时器使用

package main

import (
	"fmt"
	"log"
	"time"

	"github.com/jasonlvhit/gocron"
	"github.com/robfig/cron"
)

func task() {
	fmt.Println("I am runnning task.", time.Now())
}
func superWang() {
	fmt.Println("I am runnning superWang.", time.Now())
}

//每隔4秒执行一次(cron定时器)
func mineOne()  {
	i := 0
	c := cron.New()
	spec := "0/4 * * * * ? "
	c.AddFunc(spec, func() {
		i++
		log.Println("execute per second", i)
	})
	c.Start()


}

func scheduler2()  {
	//每隔1秒执行一个任务,每隔4秒执行另一个任务
	s := gocron.NewScheduler()
	s.Every(1).Seconds().Do(task)
	s.Every(4).Seconds().Do(superWang)

	sc := s.Start() // keep the channel
	go scheduler(s, sc)  // wait
	<-sc            // it will happens if the channel is closed
}

//8秒后删除task任务,16秒后删除所有任务
func scheduler(s *gocron.Scheduler, sc chan bool) {
	time.Sleep(8 * time.Second)
	s.Remove(task) //remove task
	time.Sleep(8 * time.Second)
	s.Clear()
	fmt.Println("All task removed")
	close(sc) // close the channel
}

func main() {
	//cron定时器
	go mineOne()

	//延迟和间隔定时器
	go scheduler2()
	select {}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值