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执行完后再执行的,在sleep时间大于等于delay时间时,sleep结束后直接执行delay;在sleep时间小于delay时间时,sleep结束后继续延迟(delay时间-sleep时间)再执行delay。?
|