java如何停顿
Java 实现程序停顿的方法
在 Java 中,可以通过以下几种方式实现程序的停顿或延迟执行:
使用 Thread.sleep()
Thread.sleep() 是 Java 中最常用的方法之一,可以让当前线程暂停执行指定的时间(毫秒)。

try {
Thread.sleep(1000); // 暂停 1 秒
} catch (InterruptedException e) {
e.printStackTrace();
}
- 参数为毫秒(1000 毫秒 = 1 秒)。
- 需要处理
InterruptedException异常。
使用 TimeUnit.sleep()
TimeUnit 是 java.util.concurrent 包中的一个枚举类,提供了更易读的时间单位。
try {
TimeUnit.SECONDS.sleep(1); // 暂停 1 秒
} catch (InterruptedException e) {
e.printStackTrace();
}
- 支持多种时间单位(如
SECONDS、MILLISECONDS、MINUTES等)。 - 底层仍然是调用
Thread.sleep()。
使用 Object.wait()
Object.wait() 可以让线程进入等待状态,直到其他线程调用 notify() 或 notifyAll()。

synchronized (lockObject) {
try {
lockObject.wait(1000); // 暂停 1 秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
- 需要在同步块中使用。
- 可以结合
notify()或notifyAll()实现线程间通信。
使用 ScheduledExecutorService
ScheduledExecutorService 可以安排任务在指定延迟后执行。
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
executor.schedule(() -> {
System.out.println("任务执行");
}, 1, TimeUnit.SECONDS); // 1 秒后执行
executor.shutdown();
- 适合需要定时或延迟执行任务的场景。
- 需要手动关闭线程池(
shutdown())。
使用 CountDownLatch
CountDownLatch 可以让线程等待直到计数器归零。
CountDownLatch latch = new CountDownLatch(1);
try {
latch.await(1, TimeUnit.SECONDS); // 最多等待 1 秒
} catch (InterruptedException e) {
e.printStackTrace();
}
- 适用于多线程同步场景。
- 可以设置超时时间。
注意事项
Thread.sleep()和TimeUnit.sleep()会阻塞当前线程,不适合在 UI 线程中使用(如 Android 开发)。- 在并发编程中,优先使用
ScheduledExecutorService或CountDownLatch等高级工具。 - 避免在关键代码中过度使用停顿,可能会影响性能。






