给出一个ScheduledFuture.cancel 中止失败的例子
时间: 2024-02-17 17:01:57 浏览: 140
几种定时任务(Timer、TimerTask、ScheduledFuture)的退出—结合真实案例【JAVA并发】.docx
好的,下面是一个`ScheduledFuture.cancel`中止失败的例子:
```java
import java.util.concurrent.*;
public class ScheduledFutureCancelExample {
public static void main(String[] args) throws InterruptedException {
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
// 每秒钟执行一次任务
ScheduledFuture<?> scheduledFuture = scheduledExecutorService.scheduleAtFixedRate(() -> {
System.out.println("任务执行中...");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}, 0, 1, TimeUnit.SECONDS);
Thread.sleep(5000);
// 尝试中止任务的执行
boolean isCancelled = scheduledFuture.cancel(false);
System.out.println("任务是否被成功中止:" + isCancelled);
scheduledExecutorService.shutdown();
}
}
```
在这个例子中,我们创建了一个定时任务,每秒钟执行一次。在任务执行期间,我们故意让任务休眠2秒钟,以便我们有足够的时间来调用`ScheduledFuture.cancel`方法。在任务执行了5秒钟之后,我们调用了`ScheduledFuture.cancel`方法,尝试中止任务的执行。但是,由于任务正在执行中,无法中止任务的执行,因此`ScheduledFuture.cancel`方法返回的布尔值为`false`,表示任务中止失败。
阅读全文