go语言从例子开始之Example31.定时器
2024-10-07 12:46:29
我们常常需要在后面一个时刻运行 Go 代码,或者在某段时间间隔内重复运行。
Go 的内置 定时器 和 打点器 特性让这些很容易实现。我们将先学习定时器,然后再学习打点器。
Example:
package main
import "fmt"
import "time" func main() {
//定时器表示在未来某一时刻的独立事件。
//你告诉定时器需要等待的时间,然后它将提供一个用于通知的通道。
//这里的定时器将等待 2 秒。
timer1 := time.NewTimer(time.Second * 2) //<-timer1.C 直到这个定时器的通道 C 明确的发送了定时器失效的值之前,将一直阻塞。
<- timer1.C
fmt.Println("Timer 1 expired.") //如果你需要的仅仅是单纯的等待,你需要使用 time.Sleep。
//定时器是有用原因之一就是你可以在定时器失效之前,取消这个定时器。这是一个例子
timer2 := time.NewTimer(time.Second)
go func(){
<- timer2.C
fmt.Println("Timer 2 expired.")
}() //停止定时器。
stop2 := timer2.Stop()
if stop2{
fmt.Println("Timer 2 stop.")
}
}
Result:
$go run example.go
Timer 1 expired.
Timer 2 stop.
第一个定时器将在程序开始后 ~2s 失效,但是第二个在它没失效之前就停止了。 坐标: 上一个例子 下一个例子
最新文章
- IE10、IE11 User-Agent 导致的 ASP.Net 网站无法写入Cookie 问题
- Gradle 10分钟上手指南
- [Python]新手写爬虫全过程(已完成)
- 在cxf中使用配置避免增加字段导致客户端必须更新、同步实体属性的问题
- sql批量获取wordpress所有留言者的邮件地址
- ERP_Oracle Fusion Application新一代ERP介绍
- [原创]Microsoft.AnalysisServices.ManagementDialogs.ServerPropertiesLanguagePanel 的类型初始值设定项引发异常
- 将string转换成UTF8在进行请求
- json <;--->;List集合,实体类 之间的相互转换
- Servlet的接口实现类
- C#。5 函数 类
- Hbase split的过程以及解发条件
- 利用MFC编写计算器
- Beta版本冲刺计划安排
- islider结合react的简单实用
- 使用lombok自动生成链式调用
- 学习ActiveMQ(七):JMS消息的事务管理
- Elasticsearch .net client NEST 5.x 使用总结
- spring mvc 简单的文件上传与下载
- Java 11 已发布,String 还能这样玩!