java 如何延时
延时方法
在 Java 中实现延时操作可以通过以下几种方式实现:
Thread.sleep()
使用 Thread.sleep() 方法可以让当前线程暂停执行指定的毫秒数。该方法会抛出 InterruptedException,需要进行异常处理。
try {
Thread.sleep(1000); // 延时 1000 毫秒(1 秒)
} catch (InterruptedException e) {
e.printStackTrace();
}
TimeUnit.sleep()
TimeUnit 是 java.util.concurrent 包中的一个枚举类,提供了更直观的延时方法,底层仍然调用 Thread.sleep(),但支持更灵活的时间单位。
try {
TimeUnit.SECONDS.sleep(1); // 延时 1 秒
} catch (InterruptedException e) {
e.printStackTrace();
}
ScheduledExecutorService
使用 ScheduledExecutorService 可以更灵活地安排延时任务,适合需要周期性或定时执行的场景。
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
executor.schedule(() -> {
System.out.println("延时任务执行");
}, 1, TimeUnit.SECONDS); // 1 秒后执行
executor.shutdown();
Object.wait()
Object.wait() 方法可以让当前线程进入等待状态,直到其他线程调用 notify() 或 notifyAll()。通常用于线程间通信。

synchronized (lockObject) {
try {
lockObject.wait(1000); // 延时 1 秒或直到被唤醒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
注意事项
Thread.sleep()和TimeUnit.sleep()会阻塞当前线程,不适合在主线程或 UI 线程中使用。ScheduledExecutorService更适合异步任务调度,避免阻塞主线程。Object.wait()需要配合同步块使用,通常用于多线程协作场景。






