java sleep() 如何用
sleep() 方法的基本用法
Thread.sleep() 是 Java 中用于暂停当前线程执行的静态方法,属于 java.lang.Thread 类。它接受一个以毫秒为单位的时间参数,表示线程暂停的时长。
语法:
Thread.sleep(long millis);
示例:

try {
Thread.sleep(1000); // 暂停线程 1 秒
} catch (InterruptedException e) {
e.printStackTrace(); // 处理中断异常
}
处理中断异常
sleep() 方法会抛出 InterruptedException,必须捕获或声明抛出。中断通常用于协作式线程终止。
示例(带中断处理逻辑):

try {
Thread.sleep(2000); // 暂停 2 秒
} catch (InterruptedException e) {
Thread.currentThread().interrupt(); // 恢复中断状态
System.out.println("线程被中断");
}
使用 TimeUnit 简化时间单位
java.util.concurrent.TimeUnit 提供了更直观的时间单位转换,避免手动计算毫秒。
示例:
import java.util.concurrent.TimeUnit;
try {
TimeUnit.SECONDS.sleep(3); // 暂停 3 秒
} catch (InterruptedException e) {
e.printStackTrace();
}
sleep() 的注意事项
- 不释放锁:
sleep()不会释放线程持有的任何锁,可能导致资源竞争问题。 - 精度限制:实际暂停时间可能因系统调度略有偏差。
- 替代方案:若需更精确的定时控制,可结合
Object.wait()或ScheduledExecutorService。
与 wait() 的区别
sleep()是Thread的静态方法,wait()是Object的实例方法。wait()会释放锁,通常需在同步块中使用。
示例对比:
synchronized (lock) {
lock.wait(1000); // 释放锁并等待
}
Thread.sleep(1000); // 不释放锁






