java如何调用sleep
使用Thread.sleep方法
在Java中,可以通过Thread.sleep方法让当前线程暂停执行一段时间。该方法接受一个以毫秒为单位的时间参数。
try {
Thread.sleep(1000); // 暂停1秒
} catch (InterruptedException e) {
Thread.currentThread().interrupt(); // 重新设置中断状态
System.err.println("Sleep interrupted");
}
处理InterruptedException
调用Thread.sleep时必须处理InterruptedException异常。当线程在睡眠期间被中断时,会抛出该异常。
try {
Thread.sleep(2000); // 暂停2秒
} catch (InterruptedException e) {
// 恢复中断状态
Thread.currentThread().interrupt();
// 执行其他清理操作
}
使用TimeUnit进行更可读的睡眠
java.util.concurrent.TimeUnit类提供了更可读的方式来指定睡眠时间单位。
import java.util.concurrent.TimeUnit;
try {
TimeUnit.SECONDS.sleep(1); // 暂停1秒
TimeUnit.MINUTES.sleep(1); // 暂停1分钟
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
注意事项
Thread.sleep会让当前线程进入阻塞状态,不会释放已持有的锁。在同步代码块中使用时要小心死锁风险。
长时间睡眠可能导致线程无法及时响应中断,应考虑使用更精细的时间控制方案。
替代方案
对于周期性任务,考虑使用ScheduledExecutorService代替直接使用Thread.sleep。

ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.schedule(() -> {
System.out.println("Task executed after delay");
}, 1, TimeUnit.SECONDS);






