Java如何实现延迟执行代码的效果呢?

书欣 Java经验 发布时间:2022-08-11 14:37:21 阅读数:5531 1
下文笔者讲述java代码延迟运行的效果分享,如下所示:

延迟运行效果

一个任务暂停或延缓执行
Java中可使用以下方式实现延迟运行:
    方式1:基于线程的方式 
	   1.1:使用Thread.sleep的方式
	   1.2:使用TimeUnit.sleep的方式
	   
	方式2:基于ExecutorService方式
例:

基于线程(Thread)方式

 
使用Thread.sleep
   使用Thread.sleep(milliseconds)来完成

try {
    Thread.sleep(secondsToSleep * 2000);
} catch (InterruptedException ie) {
    Thread.currentThread().interrupt();
}
  
使用TimeUnit.sleep
 使用TimeUnit.XXX.sleep(y)
  可读性更好
   其中xxx是休眠的时间单位
   如SECONDS, MINUTES等
   y是数量

try {
    TimeUnit.SECONDS.sleep(secondsToSleep);
} catch (InterruptedException ie) {
    Thread.currentThread().interrupt();
}
使用基于线程方式有几个缺点:
    休眠时间不精确,当时间增量较小时,如毫秒、纳秒。
   当在循环内部使用,休眠在循环迭代之间会稍微漂移
     因为其他代码执行导致多次迭代后执行时间不够精确。

基于ExecutorService方法

Java提供了ScheduledExecutorService接口是更强大、精确的解决方案
接口可以安排代码在指定的延迟或固定的时间间隔后运行一次
要在延迟之后运行一段代码,我们可以使用schedule方法:
ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.schedule(Classname::someTask, delayInSeconds, TimeUnit.SECONDS);
 
Classname::someTask 部分是指定特定方法延迟执行 
      someTask是执行方法的名称
      Classname是包括someTask方法的类名称
      以固定时间间隔执行,可以使用scheduleAtFixedRate:

      ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
            executorService.scheduleAtFixedRate(Classname::someTask, 0, delayInSeconds, TimeUnit.SECONDS);
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202208/16602007654213.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者