1. 定时器

1.1.1. 定时器

  • Timer:时间到了,执行只执行1次
  1. package main
  2. import (
  3. "fmt"
  4. "time"
  5. )
  6. func main() {
  7. // 1.timer基本使用
  8. //timer1 := time.NewTimer(2 * time.Second)
  9. //t1 := time.Now()
  10. //fmt.Printf("t1:%v\n", t1)
  11. //t2 := <-timer1.C
  12. //fmt.Printf("t2:%v\n", t2)
  13. // 2.验证timer只能响应1次
  14. //timer2 := time.NewTimer(time.Second)
  15. //for {
  16. // <-timer2.C
  17. // fmt.Println("时间到")
  18. //}
  19. // 3.timer实现延时的功能
  20. //(1)
  21. //time.Sleep(time.Second)
  22. //(2)
  23. //timer3 := time.NewTimer(2 * time.Second)
  24. //<-timer3.C
  25. //fmt.Println("2秒到")
  26. //(3)
  27. //<-time.After(2*time.Second)
  28. //fmt.Println("2秒到")
  29. // 4.停止定时器
  30. //timer4 := time.NewTimer(2 * time.Second)
  31. //go func() {
  32. // <-timer4.C
  33. // fmt.Println("定时器执行了")
  34. //}()
  35. //b := timer4.Stop()
  36. //if b {
  37. // fmt.Println("timer4已经关闭")
  38. //}
  39. // 5.重置定时器
  40. timer5 := time.NewTimer(3 * time.Second)
  41. timer5.Reset(1 * time.Second)
  42. fmt.Println(time.Now())
  43. fmt.Println(<-timer5.C)
  44. for {
  45. }
  46. }
  • Ticker:时间到了,多次执行
  1. package main
  2. import (
  3. "fmt"
  4. "time"
  5. )
  6. func main() {
  7. // 1.获取ticker对象
  8. ticker := time.NewTicker(1 * time.Second)
  9. i := 0
  10. // 子协程
  11. go func() {
  12. for {
  13. //<-ticker.C
  14. i++
  15. fmt.Println(<-ticker.C)
  16. if i == 5 {
  17. //停止
  18. ticker.Stop()
  19. }
  20. }
  21. }()
  22. for {
  23. }
  24. }