Go定时器的三种实现方式
很多时候需要周期性的执行某些操作,就需要用到定时器。定时器有三种思路。
(资料图片仅供参考)
Sleep使用休眠,让当前Goroutine休眠一定的时间来实现定时的效果,缺点是程序执行速度不均匀,导致定时周期不均匀。
for{fmt.Println(time.Now())time.Sleep(time.Second*1)}Timer
Go语言的内置包,指定一个时间开始计时,时间到之后会向外发送通知,发送通知的方式就是使用<-chan Time返回内容。
第一种方式,直接在需要等待处使用,效果和Sleep一样,一使用就卡在那了内部就是使用了Timer。
fmt.Println(time.Now())<-time.After(1*time.Second)fmt.Println(time.Now())
也可以把他拆分开,在任意地方进行等待
timer:=time.NewTimer(1*time.Second)<-timer.Cfmt.Println(time.Now())
但是以上只是做到延迟一次性执行,我们来改造一下,把他变成定时器。
done:=make(chanstruct{})timer:=time.NewTimer(1*time.Second)gofunc(){for{select{case<-timer.C:fmt.Println(time.Now())timer.Reset(1*time.Second)case<-done:return}}}()<-time.After(5*time.Second+time.Millisecond*100)done<-struct{}{}定义子Goroutine的目的是为了防止形成死锁,让定时器最终能退出,在实际项目中可能需要一个永久运行的定时器,一般为了不影响项目主逻辑也会这样定义。如果你的项目就是定时任务,我建议也这么写,这样可以注册很多个定时器互不影响。done是为了判断执行是否结束,防止主Goroutine提前退出。这个示例只有两个case,实战中如果有加其他case需要给每个case内都做一次Reset,保证重置定时器。Ticker
相比上述使用延迟执行功能实现的定时器,Ticker本身就是一个定时器(内部封装了Timer),我们使用起来就非常简单。
ticker:=time.NewTicker(1*time.Second)gofunc(){for{<-ticker.Cfmt.Println(time.Now())}}()<-time.After(5*time.Second+time.Millisecond*100)ticker.Stop()
在select 一节中讲述的官方超时控制方案非常的实用,也是使用的此函数。还使用到timer.Stop和timer.Reset这两个内置函数这里就不展开讲解了,建议进行复习。
小结定时器一般用来周期性执行任务,比如定时同步数据、计算报表、发送通知。
time.Sleep使用休眠,让当前goroutine休眠一定的时间来实现定时的效果,缺点是内部逻辑执行的速度会影响到定时器的时间差,无法做到精确间隔。Timer类似于Sleep的延迟处理,通过channel来获得通知,也可以改造成定时器。因为是延迟处理,所以要记得重置时间来实现定时执行的效果。Ticker现成的定时器,内部也是封装了 Timer。-
Go定时器的三种实现方式很多时候需要周期性的执行某些操作,就需要用到定时器。定时器有三种思路。Sleep使用休眠,让当前Goroutine休眠一定的时间来实现定时的效果,
-
中国动力电池企业加速出海 宁德时代德国工厂投产开启全球“抢单” 世界新要闻”值得一提的是,上周,宁德时代与福特汽车与考虑在美国合建电池厂的消息再度受到业界关注,不过目前双方均对外表示目前商谈还在继续,暂时...
-
多地明确!门急诊患者不再查核酸|当前播报来源:中国新闻网,综合上海发布、天津市疫情防控指挥部办公室、银川市卫健委、福建发布、沈阳市卫健委、广西南宁市新冠疫情防控指挥部、西安
-
基于.NetCore开发博客项目 StarBlog - (21) 开始开发RESTFul接口1前言最近电脑坏了,开源项目的进度也受到一些影响这篇酝酿很久了,作为本系列第二部分(API接口开发)的第一篇,得想一个好的开头,想着想着
-
保险科技融合新征程:构建互联网+医疗+医药+保险四维生态闭环随着大数据、云计算、人工智能等科技与金融业态的融合日益紧密,金融科技正成为助推保险业高质量发展的新动能。近年来,无论是保险公司,还是
-
每日快看:嘉环科技(603206):中国国际金融股份有限公司关于嘉环科技股份有限公司2022年度持续督导现场检查报告中国国际金融股份有限公司关于嘉环科技股份有限公司2022年度持续督导现场检查报告上海证券交易所:经中国证券监督管理委员会(以下简称“中国
-
【天天聚看点】小米 MIX Fold 2 月光银、玄夜黑配色今日开售编程客栈12月20日讯:今js日php10点,小米MIXFol编程客栈d2新配色——月光银、玄夜黑将正式开售,售价8999python编程元
-
多地倡导无症状和轻症可上班 抗原试剂“一盒难求”局面或将扭转连日以来,抗原试剂盒“一盒难求”,成为了抢手的香饽饽。受各地陆续取消核酸检测点的影响,抗原试剂成为了居民判断自己是否感染新冠病毒的...
-
唐源电气董秘回复:公司股价受多方因素影响,目前公司运营一切正常,董事会及管理层会继续深耕经营唐源电气(300789)12月19日在投资者关系平台上答复了投资者关心的问题。投资者:陈唐龙董事长,贵公司股票自上市以来长期低迷并且长期下跌,请
-
浙农股份董秘回复:公司作为浙江省供销社下属唯一上市平台,将不断践行服务三农使命-每日热讯浙农股份(002758)12月19日在投资者关系平台上答复了投资者关心的问题。投资者:贵公司是否参与“浙江高质量发展建设共同富裕示范区”的建设浙
-
建安区司法局组织召开“送法进企业”优化法治化营商环境企业界负责人座谈会|当前关注为有力推动全区法治化营商环境建设,为企业健康发展提供法治保障,近日,建安区司法局联合建安区委统战部在建安区司法局会议室召开“送法进...
-
回来了!沃伦明日迎来篮网首秀 时隔两年重返NBA回来了!沃伦明日迎来篮网首秀时隔两年重返NBA,沃伦,篮网队,nba,凯文杜兰特,凯里·欧文,多伦多猛龙队
-
阿姨常年练功地被磨出印记 画面让网友看笑:太执着 树压力好大_每日热门近日,一位阿姨常年绕树练功的视频火了,视频中,阿姨无论春夏秋冬,都按固定路线锻炼,地面上都磨出印记。网友看完之后纷纷表示,这棵树的压
-
光热玻璃加紧供货!安彩光热与国内某100MW光热发电项目达成合作据安彩高科(600207)12月14日晚间公告,全资子公司——河南安彩光热科技有限责任公司(下文简称安彩光热)是全球第二家具备批量生产光热玻...
-
本周盘点(12.12-12.16):信雅达周跌3.37%,主力资金合计净流出1.22亿元截至2022年12月16日收盘,信雅达(600571)报收于10 04元,较上周的10 39元下跌3 37%。本周,信雅达12月12日盘中最高价报10 67元。12月15日盘
-
苏大维格:12月15日融券卖出金额6.32万元,占当日流出金额的0.05%同花顺数据中心显示,苏大维格12月15日获融资买入1707 72万元,占当日买入金额的14 03%,当前融资余额8574 37万元,占流通市值的1 96%,超过历
-
川宁生物总经理邓旭衡:打造具有全球竞争力的创新型合成生物学企业中证网讯(记者倪铭)12月15日,川宁生物首次公开发行股票并在创业板上市网上路演在中国证券报·中证网举行。川宁生物总经理邓旭衡致辞时表...
-
四方科技(603339)12月15日主力资金净买入344.13万元|环球观速讯截至2022年12月15日收盘,四方科技(603339)报收于12 93元,上涨2 86%,换手率1 13%,成交量3 49万手,成交额4489 34万元。12
-
美联储小幅上调今年GDP增速预期 继续下调明后两年GDP预期美联储小幅上调今年GDP增速预期继续下调明后两年GDP预期
-
欧克科技: 安信证券关于欧克科技使用部分募集资金向全资子公司增资以实施募投项目的核查意见_全球快报欧克科技:安信证券关于欧克科技使用部分募集资金向全资子公司增资以实施募投项目的核查意见
-
我市加快推进国家中小城市综合改革试点工作_今日热讯8月25日,我市召开加快推进国家中小城市综合改革试点工作会议。市领导王惠民、王军霞出席会议。会议总结了我市国家中小城市综合改革试点前一阶
-
高凌信息(688175)12月13日主力资金净卖出434.41万元-微头条截至2022年12月13日收盘,高凌信息(688175)报收于37 46元,下跌4 19%,换手率5 93%,成交量1 11万手,成交额4187 05万元。
-
【新要闻】绿盟科技:交通强国建设背景下交通运输网络安全建设新主张全文共3816字,阅读大约需8分钟。 一 引言 党的二十大报告提出,坚持把发展经济的着力点放在实体经济上,推进新型工业化,加快建设制
-
兆新股份:12月12日获融资买入39.28万元|今日关注同花顺数据中心显示,兆新股份12月12日获融资买入39 28万元,占当日买入金额的2 44%,当前融资余额1330 66万元,占流通市值的0 37%,超过历史8
-
全球微头条丨万润新能(688275.SH)拟投建年产10万吨湖北万润新能源电池正极材料项目智通财经APP讯,万润新能(688275 SH)发布公告,公司拟与十堰市郧阳区政府签署《湖北万润新能源电池正极材料项目投资协议书》,双方约定在秦巴
-
热消息:教育部:严厉打击隐形变异培训 强化非学科类培训监管教育部6日在其官网发布消息称,教育部日前召开2022年全国“双减”工作秋季学期视频调度会,部署秋季学期校外教育培训治理工作。会议指出,...
-
全球资讯:一张票高达358元,阿凡达2为何这么贵?中新经纬12月10日电 (牛朝阁)“358元!怎么这么贵!”“票价这么贵
-
唯万密封(301161)12月8日主力资金净买入420.23万元截至2022年12月8日收盘,唯万密封(301161)报收于23 73元,上涨5 19%,换手率13 26%,成交量3 78万手,成交额8860 64万元。12
-
生益科技(600183)12月7日主力资金净卖出2353.47万元截至2022年12月7日收盘,生益科技(600183)报收于14 76元,下跌3 72%,换手率0 64%,成交量15 0万手,成交额2 24亿元。12月7日的
-
股票行情快报:八亿时空(688181)12月6日主力资金净买入296.08万元截至2022年12月6日收盘,八亿时空(688181)报收于39 4元,上涨0 25%,换手率0 57%,成交量0 44万手,成交额1741 55万元。12月6