Java如何延迟
在Java中实现延迟可以通过多种方式实现,以下是几种常见的方法:
使用Thread.sleep()
通过调用Thread.sleep()方法可以让当前线程暂停执行指定的毫秒数。需要注意的是,该方法会抛出InterruptedException,需要进行异常处理。

try {
Thread.sleep(1000); // 延迟1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
使用ScheduledExecutorService
ScheduledExecutorService提供了更灵活的延迟执行方式,可以调度任务在指定延迟后运行。
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
executor.schedule(() -> {
System.out.println("延迟执行的任务");
}, 2, TimeUnit.SECONDS); // 延迟2秒执行
executor.shutdown();
使用Timer和TimerTask
Timer和TimerTask组合也可以实现延迟执行任务的功能。

Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("延迟执行的任务");
}
}, 3000); // 延迟3秒执行
使用CompletableFuture.delayedExecutor
Java 9及以上版本支持CompletableFuture.delayedExecutor,可以创建一个延迟执行的执行器。
CompletableFuture.runAsync(() -> {
System.out.println("延迟执行的任务");
}, CompletableFuture.delayedExecutor(1, TimeUnit.SECONDS));
使用LockSupport.parkNanos
对于需要高精度延迟的场景,可以使用LockSupport.parkNanos方法。
long delay = 1_000_000_000; // 1秒,单位为纳秒
LockSupport.parkNanos(delay);
System.out.println("延迟1秒后执行");
每种方法适用于不同的场景,选择时需考虑线程安全、精度需求以及代码复杂度等因素。






