当前位置: 首页 > news >正文

Java延时

在 Java 中实现延时操作主要有以下几种方式,根据使用场景选择合适的方法:

1. Thread.sleep()(最常用)

java

复制

下载

try {// 延时 1000 毫秒(1秒)Thread.sleep(1000); 
} catch (InterruptedException e) {// 处理中断异常(通常恢复中断状态)Thread.currentThread().interrupt(); 
}

特点

  • 简单易用,阻塞当前线程

  • 需处理 InterruptedException


2. TimeUnit(推荐,更语义化)

java

复制

下载

import java.util.concurrent.TimeUnit;try {TimeUnit.SECONDS.sleep(1);  // 延时 1 秒// 等价于 TimeUnit.MILLISECONDS.sleep(1000);
} catch (InterruptedException e) {Thread.currentThread().interrupt();
}

优点:时间单位更清晰(支持 NANOSECONDS/MICROSECONDS/MILLISECONDS/SECONDS 等)


3. ScheduledExecutorService(异步延时任务)

java

复制

下载

import java.util.concurrent.*;ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);// 延时 1 秒后执行任务(异步不阻塞主线程)
scheduler.schedule(() -> {System.out.println("任务执行");
}, 1, TimeUnit.SECONDS);// 关闭线程池(实际开发中根据业务决定关闭时机)
scheduler.shutdown(); 

适用场景

  • 需要异步执行延时任务

  • 避免阻塞主线程

  • 支持定时周期性任务


4. Timer 类(旧版方案,不推荐新项目使用)

java

复制

下载

Timer timer = new Timer();
timer.schedule(new TimerTask() {@Overridepublic void run() {System.out.println("延时任务");}
}, 1000); // 延时 1 秒

缺点

  • 单线程执行,任务相互影响

  • 抛出异常会导致整个 Timer 终止

  • 推荐用 ScheduledExecutorService 替代


5. Object.wait(timeout)(线程同步场景)

java

复制

下载

synchronized (lock) {try {lock.wait(1000); // 释放锁并等待 1 秒} catch (InterruptedException e) {Thread.currentThread().interrupt();}
}

注意:需在同步块中使用,会释放对象锁。


选择建议:

  1. 简单阻塞当前线程 → 用 Thread.sleep() 或 TimeUnit.sleep()

  2. 后台异步延时任务 → 用 ScheduledExecutorService

  3. 线程间协调等待 → 用 Object.wait(timeout)

  4. 避免在新项目中使用 Timer

⚠️ 注意:所有延时方法的时间精度受操作系统调度影响,不保证完全精确。

相关文章:

  • 【Qt】QStateMachine状态机-实现播放按钮状态切换
  • Python Day51 学习(日志Day20复习)
  • AIGC 基础篇 Python基础(练习1)
  • Phthon3 学习记录-0613
  • 英伟达诉求1亿IOPS SSD:打破AI算力存储瓶颈
  • 源码开发详解:搭建类似抖音小店的直播带货APP需要掌握哪些技术?
  • 强化学习入门:价值、回报、策略概念详解
  • 本地密码生成管理工具,自定义生成密码
  • AI绘画能发展到企业大规模使用的地步么?
  • 毛纪逆向分析
  • 如何识别并管理多项目环境下的潜在风险
  • typora图片左对齐
  • archlinux安装详细过程(不用翻墙, 中文输入法, 企业微信, 微信等常用软件安装)
  • 函数调用过程中的栈帧变化
  • Softhub软件下载站实战开发(二):项目基础框架搭建
  • 【FineDance】训练:accelerate config 的作用
  • 项目管理工具在并行管理中如何充分发挥作用
  • c++中vector的使用
  • 性能测试详解
  • Java面向对象this关键字和static关键字
  • 罗庄区建设局网站/青岛seo杭州厂商
  • 建立站点的作用/石家庄热搜
  • wordpress url路由/安卓优化大师app
  • 如何看网站的建站时间/百度一下app
  • 小企业网站 优帮云/百度网页翻译
  • 上海网站建设网页制作/电商