0
点赞
收藏
分享

微信扫一扫

Web3.0与AI的交融:开启智能互联网新时代

12a597c01003 2天前 阅读 3
golang
package main

import (
	"fmt"
	"net/http"
	"time"
)

func main() {
	// 创建一个定时器,每隔1秒钟执行一次
	ticker := time.NewTicker(1 * time.Second)
	done := make(chan bool)
	//设置3s超时,避免请求时间过长
	client := http.Client{
		Timeout: 3 * time.Second,
	}
	go func() {
		for {
			select {
			case <-done:
				// 定时任务结束
				return
			case <-ticker.C:
				//请求url,www.baidu.com
				resp, _ := client.Get("https://www.baidu.com")
				//关闭请求
				defer resp.Body.Close()
				//打印状态码
				fmt.Println(resp.StatusCode)
				fmt.Println("定时任务执行中...")
			}
		}
	}()

	//select {} 语句会阻塞主线程,等待一个永远不会到来的信号。程序会一直运行,直到手动停止
	select {}

	// 等待5秒钟后停止定时任务
	time.Sleep(5 * time.Second)
	// 停止定时器
	ticker.Stop()
	// 发送停止信号
	done <- true
	
	fmt.Println("定时任务已停止")
}

想5秒内结束就注释掉select{}

在linux上后台执行的话,可以这样

nohup go run channel.go &
举报

相关推荐

0 条评论