java运行如何暂停
暂停 Java 程序的方法
使用 Thread.sleep() 方法
通过调用 Thread.sleep(milliseconds) 可以让当前线程暂停执行指定的毫秒数。例如:
try {
Thread.sleep(2000); // 暂停 2 秒
} catch (InterruptedException e) {
e.printStackTrace();
}
使用 Object.wait() 方法
通过 wait() 方法可以让当前线程进入等待状态,直到其他线程调用 notify() 或 notifyAll()。

synchronized (lockObject) {
try {
lockObject.wait(); // 暂停线程,等待唤醒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
使用 LockSupport.park() 方法LockSupport.park() 可以暂停当前线程,直到调用 LockSupport.unpark(thread)。

Thread thread = Thread.currentThread();
LockSupport.park(); // 暂停当前线程
// 在其他线程调用 LockSupport.unpark(thread) 恢复
使用 CountDownLatch 或 CyclicBarrier
通过并发工具类可以实现线程的暂停与恢复。例如 CountDownLatch:
CountDownLatch latch = new CountDownLatch(1);
new Thread(() -> {
try {
latch.await(); // 暂停线程,直到 latch.countDown()
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
latch.countDown(); // 恢复线程
使用 ScheduledExecutorService 延迟执行
通过调度线程池可以实现任务的延迟执行或暂停效果。
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
executor.schedule(() -> {
System.out.println("任务恢复执行");
}, 3, TimeUnit.SECONDS); // 3 秒后恢复执行
注意事项
Thread.sleep()不会释放锁,而wait()会释放锁。- 使用
wait()和notify()时必须在同步块(synchronized)中调用。 - 避免在主线程中长时间暂停,否则可能导致 UI 无响应(如 Swing/JavaFX)。
- 多线程环境下需注意线程安全和死锁问题。






