欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

go語言定時(shí)器Timer及Ticker的功能使用示例詳解

 更新時(shí)間:2022年04月14日 17:12:31   作者:Jeff的技術(shù)棧  
這篇文章主要為大家介紹了go語言定時(shí)器的功能使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪

定時(shí)器1-"*/5 * * * * *"

package main
import (
	"fmt"
	"github.com/robfig/cron"
)
//主函數(shù)
func main() {
	cron2 := cron.New() //創(chuàng)建一個cron實(shí)例
	//執(zhí)行定時(shí)任務(wù)(每5秒執(zhí)行一次)
	err:= cron2.AddFunc("*/5 * * * * *", print5)
	if err!=nil{
		fmt.Println(err)
	}
	//啟動/關(guān)閉
	cron2.Start()
	defer cron2.Stop()
	select {
	//查詢語句,保持程序運(yùn)行,在這里等同于for{}
	}
}
//執(zhí)行函數(shù)
func print5()  {
	fmt.Println("每5s執(zhí)行一次cron")
}

設(shè)置說明

 ┌─────────────second 范圍 (0 - 60)
 │ ┌───────────── min (0 - 59)
 │ │ ┌────────────── hour (0 - 23)
 │ │ │ ┌─────────────── day of month (1 - 31)
 │ │ │ │ ┌──────────────── month (1 - 12)
 │ │ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to
 │ │ │ │ │ │                  Saturday)
 │ │ │ │ │ │
 │ │ │ │ │ │
 * * * * * *  

星號(*) :表示 cron 表達(dá)式能匹配該字段的所有值。如在第5個字段使用星號(month),表示每個月

斜線(/):表示增長間隔,如第2個字段(minutes) 值是 3-59/15,表示每小時(shí)的第3分鐘開始執(zhí)行一次,之后 每隔 15 分鐘執(zhí)行一次(即 3(3+0*15)、18(3+1*15)、33(3+2*15)、48(3+3*15) 這些時(shí)間點(diǎn)執(zhí)行),這里也可以表示為:3/15

逗號(,):用于枚舉值,如第6個字段值是 MON,WED,FRI,表示 星期一、三、五 執(zhí)行

連字號(-):表示一個范圍,如第3個字段的值為 9-17 表示 9am 到 5pm 直接每個小時(shí)(包括9和17)

問號(?):只用于 日(Day of month) 和 星期(Day of week),表示不指定值,可以用于代替 *

定時(shí)器2-Timer-Ticker

Timer  //時(shí)間到了產(chǎn)生一次事件
Ticker  //時(shí)間到了循環(huán)產(chǎn)生事件

Timer-只執(zhí)行一次

package main
import (
	"fmt"
	"time"
)
func main() {
	//創(chuàng)建一個定時(shí)器,設(shè)置時(shí)間為2s,2s后,往time通道寫內(nèi)容(當(dāng)前時(shí)間)
	timer := time.NewTimer(2 * time.Second)
	fmt.Println("當(dāng)前時(shí)間:", time.Now())
	//2s后,往timer.C寫數(shù)據(jù),有數(shù)據(jù)后,就可以讀取
	t := <-timer.C //channel沒有數(shù)據(jù)前后阻塞
	fmt.Println("t = ", t)
}

Ticker-循環(huán)執(zhí)行

package main
import (
	"fmt"
	"time"
)
//驗(yàn)證time.NewTimer(),時(shí)間到了,只會響應(yīng)一次
func main() {
	timer := time.NewTicker(1 * time.Second)
	for {
		<-timer.C
		fmt.Println("時(shí)間到")
	}
}

結(jié)果:

時(shí)間到
時(shí)間到
時(shí)間到
時(shí)間到

Timer延時(shí)功能

time.NewTimer(2 * time.Second)  //相當(dāng)于time.Sleep(2 * time.Second)
func main() {
	//延時(shí)2s后打印一句話
	timer := time.NewTimer(2 * time.Second)
	<-timer.C
	fmt.Println("時(shí)間到")
}
func main() {
	<-time.After(2 * time.Second) //定時(shí)2s,阻塞2s, 2s后產(chǎn)生一個事件,往channel寫內(nèi)容
	fmt.Println("時(shí)間到")
}

停止和重置定時(shí)器

ok := timer.Reset(1 * time.Second) //重新設(shè)置為1s
timer.Stop() //停止定時(shí)器

停止:

func main() {
	timer := time.NewTimer(3 * time.Second)
	go func() {
		<-timer.C
		fmt.Println("子協(xié)程可以打印了,因?yàn)槎〞r(shí)器的時(shí)間到")
	}()
	timer.Stop() //停止定時(shí)器
	for {
	}
}

重置:

func main() {
	timer := time.NewTimer(3 * time.Second)
	ok := timer.Reset(1 * time.Second) //重新設(shè)置為1s
	fmt.Println("ok = ", ok)
	<-timer.C
	fmt.Println("時(shí)間到")
}

定時(shí)器Ticker使用

package main
import (
	"fmt"
	"time"
)
func main() {
	ticker := time.NewTicker(1 * time.Second)
	i := 0
	for {
		<-ticker.C
		i++
		fmt.Println("i = ", i)
		if i == 5 {
			ticker.Stop()
			break
		}
	}
}

以上就是go語言定時(shí)器的功能使用示例詳解的詳細(xì)內(nèi)容,更多關(guān)于go語言定時(shí)器的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • go-micro微服務(wù)domain層開發(fā)示例詳解

    go-micro微服務(wù)domain層開發(fā)示例詳解

    這篇文章主要為大家介紹了go-micro微服務(wù)domain層開發(fā)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Go語言Cookie用法分析

    Go語言Cookie用法分析

    這篇文章主要介紹了Go語言Cookie用法,結(jié)合實(shí)例形式分析了Go語言Cookie的設(shè)置、讀取等相關(guān)操作技巧,需要的朋友可以參考下
    2017-02-02
  • go語言實(shí)現(xiàn)一個最簡單的http文件服務(wù)器實(shí)例

    go語言實(shí)現(xiàn)一個最簡單的http文件服務(wù)器實(shí)例

    這篇文章主要介紹了go語言實(shí)現(xiàn)一個最簡單的http文件服務(wù)器的方法,實(shí)例分析了Go語言操作http的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • 解決老版本goland無法調(diào)試新版本go的問題

    解決老版本goland無法調(diào)試新版本go的問題

    這篇文章主要給大家介紹了如何解決老版本goland無法調(diào)試新版本go的問題,文中通過代碼示例給大家講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-11-11
  • Go Module常用命令及如何使用Go Module

    Go Module常用命令及如何使用Go Module

    go module是go官方自帶的go依賴管理庫,在1.13版本正式推薦使用,這篇文章主要介紹了Go Module常用命令及如何使用Go Module,需要的朋友可以參考下
    2024-02-02
  • go語言context包功能及操作使用詳解

    go語言context包功能及操作使用詳解

    這篇文章主要為大家介紹了go語言context包功能及操作使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • Go語言sync包與鎖實(shí)現(xiàn)限制線程對變量的訪問

    Go語言sync包與鎖實(shí)現(xiàn)限制線程對變量的訪問

    本文主要介紹了Go語言sync包與鎖實(shí)現(xiàn)限制線程對變量的訪問,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Go?實(shí)現(xiàn)?Nginx?加權(quán)輪詢算法的方法步驟

    Go?實(shí)現(xiàn)?Nginx?加權(quán)輪詢算法的方法步驟

    本文主要介紹了Go?實(shí)現(xiàn)?Nginx?加權(quán)輪詢算法的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Golang 利用反射對結(jié)構(gòu)體優(yōu)雅排序的操作方法

    Golang 利用反射對結(jié)構(gòu)體優(yōu)雅排序的操作方法

    這篇文章主要介紹了Golang 利用反射對結(jié)構(gòu)體優(yōu)雅排序的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • 如何用go-zero 實(shí)現(xiàn)中臺系統(tǒng)

    如何用go-zero 實(shí)現(xiàn)中臺系統(tǒng)

    這篇文章主要介紹了如何用go-zero 實(shí)現(xiàn)中臺系統(tǒng),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12

最新評論