java中和sleep功能类似,但是不会导致程序卡死的方法
时间: 2024-12-08 07:15:26 浏览: 11
Java中有一个叫做`Thread.sleep()`的方法,它能让当前线程暂时停止执行指定的时间。如果直接在主线程中使用这个方法,会阻塞UI事件处理,造成界面无响应。为了避免这种阻塞,Java提供了一种更为优雅的方式——`java.util.concurrent`包下的`ScheduledExecutorService`。
`ScheduledExecutorService`允许你在未来的某个时间安排任务执行,其中就包括定时暂停和恢复的功能。你可以创建一个`ScheduledFuture`,通过`scheduleWithFixedDelay`或`scheduleAtFixedRate`方法设置任务在特定间隔后执行,并在需要的时候取消这个延迟。
例如:
```java
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
ScheduledFuture<?> future = executor.scheduleWithFixedDelay(() -> {
// 你的操作...
}, delay, period, TimeUnit.SECONDS); // 设置初始延迟和周期
// 后续如果你需要取消任务,可以这样做:
future.cancel(true);
```
这样,即使你想要暂停一段时间,也不会让整个程序暂停,而是让线程进入等待状态,直到预定的时间过后再继续执行。
阅读全文