Flutter学习之 Delay(延迟)与sleep(休眠)的区别

Delay:线程延迟,该线程还在运行,占用CPU。

sleep:线程休眠,它会被挂起,把CPU让给其他线程,不占用CPU。

1、sleep时间低于delay时间

print("===========开始时间${DateTime.now()}===============");
Future.delayed(Duration(seconds: 10),(){
  print("===========延迟10秒后时间${DateTime.now()}===============");
});
Future(() {
  sleep(Duration(seconds: 5));
  print("===========休眠5秒后时间${DateTime.now()}===============");
});
print("===========结束时间${DateTime.now()}===============");

执行结果:

2、sleep时间等于delay时间

print("===========开始时间${DateTime.now()}===============");
Future.delayed(Duration(seconds: 10),(){
  print("===========延迟10秒后时间${DateTime.now()}===============");
});
Future(() {
  sleep(Duration(seconds: 10));
  print("===========休眠10秒后时间${DateTime.now()}===============");
});
print("===========结束时间${DateTime.now()}===============");

执行结果:

3、sleep时间大于delay时间

print("===========开始时间${DateTime.now()}===============");
Future.delayed(Duration(seconds: 10),(){
  print("===========延迟10秒后时间${DateTime.now()}===============");
});
Future(() {
  sleep(Duration(seconds: 20));
  print("===========休眠20秒后时间${DateTime.now()}===============");
});
print("===========结束时间${DateTime.now()}===============");

执行结果:

总结:

由1、2、3可以得出结论,在使用Delay和sleep时都不影响其他代码的继续执行,这点从开始和结束时间的打印可以看出来;Delay是在Sleep执行完后再执行的,在sleep时间大于等于delay时间时,sleep结束后直接执行delay;在sleep时间小于delay时间时,sleep结束后继续延迟(delay时间-sleep时间)再执行delay。 

print("===========开始时间${DateTime.now()}===============");
//延迟嵌套问题 第一个延迟走完后在执行第二个延迟
Future.delayed(Duration(seconds: 10),(){
  print("===========1延迟10秒后时间${DateTime.now()}===============");
  Future.delayed(Duration(seconds: 5),(){
    print("===========2延迟5秒后时间${DateTime.now()}===============");
  });
});
//sleep与delayed同时存在的时候,先执行sleep,执行完后再执行delayed.
Future(() {
  sleep(Duration(seconds: 20));
  print("===========休眠20秒后时间${DateTime.now()}===============");
});
Future.delayed(Duration(seconds: 5),(){
  print("===========3延迟5秒后时间${DateTime.now()}===============");
});
print("===========结束时间${DateTime.now()}===============");

打印如下:

总结:

多个同级delay与sleep共存时,先执行sleep在执行delay不变,delay的执行顺序是看谁的延迟时间短先执行,相同时间的话则顺序执行. 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用和讨论了在Flutter中使用sleep和Future.delayed方法的延迟效果。sleep方法可以让当前线程睡眠指定的时间,而Future.delayed方法则会在延迟一定时间后执行指定的回调函数。根据引用的结论,当sleep和Future.delayed同时存在时,先执行sleep,执行完后再执行Future.delayed。在示例代码中,先打印开始时间,然后执行延迟嵌套的两个延迟方法,接着执行sleep方法,最后执行第三个延迟方法,并打印结束时间。 引用给出了一个使用sleep方法模拟网络操作的例子。在这个例子中,调用getNetworkData方法会让当前线程睡眠3秒钟,模拟了一个耗时的网络请求,并在睡眠结束后返回数据。 综上所述,在Flutter中,sleep方法可以用于让当前线程睡眠指定的时间,而Future.delayed方法可以用于延迟执行指定的回调函数。这些方法可以用来模拟耗时操作或实现延迟执行的需求。123 #### 引用[.reference_title] - *1* *3* [Flutter学习-Dart异步](https://blog.csdn.net/yong_19930826/article/details/118941078)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *2* [Flutter学习Delay(延迟)与sleep(休眠)的区别](https://blog.csdn.net/qq_34707150/article/details/123964662)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值