当前位置: 首页 > news >正文

武威市市建设局网站建筑业管理公司网站建设需要要求什么

武威市市建设局网站建筑业管理,公司网站建设需要要求什么,泊头网站建设甘肃,免费搭建手机网站原文链接,可获取更多Go语言学习资料 概述 在日常开发中,我们不可避免的需要使用到定时任务用来处理业务逻辑。在Go语言中内置的有两个定时器,Timer和Ticker,合理的使用这两个定时器可以很好的解决定时任务的需求,同时…

原文链接,可获取更多Go语言学习资料

概述

在日常开发中,我们不可避免的需要使用到定时任务用来处理业务逻辑。在Go语言中内置的有两个定时器,TimerTicker,合理的使用这两个定时器可以很好的解决定时任务的需求,同时除了这两个内置的定时器外,还有另外的三方库也可以用来完成定时任务的需求。

Timer

简介

Timer定时器可以在指定时间后执行一次,使用time包中的NewTimer方法传入间隔时间参数即可创建一个Timer定时器,定时器将会在指定的时间后执行一次。
Timer中共有以下方法可调用

// 创建
func NewTimer(d Duration) *Timer
// 重置
func (t *Timer) Reset(d Duration) bool
// 停止
func (t *Timer) Stop() bool

Timer中除了有以上方法之外,还有最重要的就是Timer中包含一个时间类型的通道C,当指定时间间隔到达后,就会将当前时间发送到通道C中,这样我们可以使用select监听通道C即可完成在指定时间后执行任务的需求。

基础用法

我们根据上面的描述,完成了下面的代码:

func main() {// 创建一个Timer定时器timer := time.NewTimer(time.Second * 2)// 延迟关闭定时器defer timer.Stop()fmt.Println("当前时间:", time.Now())select {// 使用select监听通道Ccase nowTime := <-timer.C:fmt.Println("间隔2秒后指定定时任务,当前时间:", nowTime)}
}

在idea中运行代码后会输出以下内容:

当前时间: 2024-06-30 15:12:08.7736065 +0800 CST m=+0.002108801
间隔2秒后指定定时任务,当前时间: 2024-06-30 15:12:10.7797079 +0800 CST m=+2.008210201Process finished with the exit code 0

可以看到,Timer定时器在指定时间后会执行一次任务,然后结束。

Reset使用

在上面的代码中可以看到Timer在指定时间后仅能执行一次任务,但是我们可以使用Reset方法重置定时器,这样的话可以在每次执行任务后重置,用来达到每间隔指定时间都执行一次任务的需求。
将代码略做修改如下:

func main() {// 创建一个Timer定时器timer := time.NewTimer(time.Second * 2)// 延迟关闭定时器defer timer.Stop()fmt.Println("当前时间:", time.Now())for {timer.Reset(time.Second * 2)select {// 使用select监听通道Ccase nowTime := <-timer.C:fmt.Println("间隔2秒后指定定时任务,当前时间:", nowTime)}}
}

在上面代码中可以看到在每次的循环中都重置一次Timer定时器,这样的话就可以实现每隔一段时间都执行一次任务的需求。
最终运行结果如下:

当前时间: 2024-06-30 15:16:01.2907834 +0800 CST m=+0.002052801
间隔2秒后指定定时任务,当前时间: 2024-06-30 15:16:03.3096846 +0800 CST m=+2.020954001
间隔2秒后指定定时任务,当前时间: 2024-06-30 15:16:05.3236498 +0800 CST m=+4.034919201
间隔2秒后指定定时任务,当前时间: 2024-06-30 15:16:07.3318153 +0800 CST m=+6.043084701
间隔2秒后指定定时任务,当前时间: 2024-06-30 15:16:09.3462966 +0800 CST m=+8.057566001
间隔2秒后指定定时任务,当前时间: 2024-06-30 15:16:11.3504773 +0800 CST m=+10.061746701
……

Ticker

简介

Ticker定时器的用法和Timer定时器的用法以及内置的方法都一样,区别在于Ticker不仅仅只执行一次,而是会根据指定的时间间隔不停地执行。

基础用法

代码如下:

func main() {ticker := time.NewTicker(time.Second * 2)defer ticker.Stop()fmt.Println("当前时间:", time.Now())for {select {case nowTime := <-ticker.C:fmt.Println("间隔2秒后指定定时任务,当前时间:", nowTime)}}
}

根据Ticker写出以上代码,代码会每隔2秒执行一次,不需要像Timer中那样每次使用Reset方法来重置定时器,最终运行结果如下:

当前时间: 2024-06-30 15:20:27.4070592 +0800 CST m=+0.002137901
间隔2秒后指定定时任务,当前时间: 2024-06-30 15:20:29.4083801 +0800 CST m=+2.003458801
间隔2秒后指定定时任务,当前时间: 2024-06-30 15:20:31.414517 +0800 CST m=+4.009595701
间隔2秒后指定定时任务,当前时间: 2024-06-30 15:20:33.4191099 +0800 CST m=+6.014188601
间隔2秒后指定定时任务,当前时间: 2024-06-30 15:20:35.4099723 +0800 CST m=+8.005051001
间隔2秒后指定定时任务,当前时间: 2024-06-30 15:20:37.4208446 +0800 CST m=+10.015923301
……

Ticker定时器中同样也有Reset方法,但是就算不调用Reset方法定时器也会一直执行,所以这里的Reset方法可以用来重置定时器的间隔时间。

区别

  • Ticker定时器表示每隔一段时间就执行一次,一般可执行多次。
  • Timer定时器表示在一段时间后执行,默认情况下只执行一次,如果想再次执行的话,每次都需要调用Reset方法,此时效果类似Ticker定时器。同时也可以调用Stop方法取消定时器。
http://www.yayakq.cn/news/614427/

相关文章:

  • 专业服务网站开发企业响应式网站建设
  • 杭州 做网站百度网站排名
  • 网站轮播效果做论坛网站时应该注意什么
  • 网站设计 趋势wordpress注册不跳转
  • 医院网站建设规划wordpress大发
  • 网站制作关键技术电商网站开发需要什么语言
  • 如何做一名优秀的网站管理者个股期权网站开发
  • 专业简历制作网站推荐小程序搭建需要什么
  • 网站说明页命名淘宝上做网站行吗
  • 上海知名网站建设公司新公司名字注册查询
  • 网站的更新与维护网站建设维护公司
  • 朝阳网站建设怎么在百度创建网站
  • 私人网站建设可以做企业网站
  • 福州网站建设方案书网站建设业务员的话术
  • php网站迁移东莞网红打卡旅游景点
  • 做两个单页面网站大概多少钱云电脑平台哪个最好
  • 淘宝客如何做自己的网站photoshop快捷键命令大全
  • 建立网站一般那些阶段安徽省建设安全协会网站
  • 培训会网站建设云教育科技网站建设
  • 网站建设 亿安网络网站如何改字体
  • 什么网站上做推广效果比较好常见的网络营销方法及其效果
  • 中山微网站建设多少钱站群管理
  • 永嘉网站制作视频网站直播怎么做的
  • 福建省漳州市建设局网站吉林智能网站建设企业
  • 视觉做的比较好的国外网站网站优化升级怎么做
  • 网站建站企业制作外贸型网站
  • 网站建设合同书样本网站维护得多久
  • 高端网站设计上海网站建设上海网站的版式设计
  • 阿里巴巴国际站工作怎么样新乡手机网站建设官网
  • 好用的在线地图网站uo建设网站