下载cron包:

go get github.com/robfig/cron

开启一个定时:

根据cron表达式进行时间调度,cron可以精确到秒,大部分表达式格式也是从秒开始。

c := cron.New()默认从分开始,所以加上cron.WithSeconds(),保证定时按照表达式字面意思执行。

func main() {
    
  c := cron.New(cron.WithSeconds()) //精确到秒
  
  //定时任务
  spec := "*/1 * * * * ?" //cron表达式,每秒一次
  c.AddFunc(spec, func() {
    
     fmt.Println("11111")
  })
  
  c.Start()
  select {}  //阻塞主线程停止
}

停止定时:

由于goroutine没有线程id,所以无法从外部停止指定的定时任务。cron自带Stop()方法,支持在方法体里使用,来停止当前定时。

何时调用Stop()方法,需要根据自身业务触