CompletableFuture在超时后,能够停止执行吗?

简介: CompletableFuture在超时后,能够停止执行吗?

沉默可能产生误解,我需要说话,说话将我推向歧途,我必须沉默。赫塔·米勒——《国王鞠躬,国王杀人》

好问题,尝试一下

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.stream.Stream;
class Scratch {
    public static void main(String[] args) throws ExecutionException, InterruptedException, TimeoutException {
        CompletableFuture.runAsync(() -> Stream.generate(Object::new).forEach(System.out::println)).get(2, TimeUnit.SECONDS);
        Thread.currentThread().join();
    }
}


发现两秒后断开了

那我们try下异常

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.stream.Stream;
class Scratch {
    public static void main(String[] args) throws ExecutionException, InterruptedException, TimeoutException {
        try {
            CompletableFuture.runAsync(() -> Stream.generate(Object::new).forEach(System.out::println)).get(2, TimeUnit.SECONDS);
        } catch (TimeoutException e) {
            System.err.println("Timeout");
        }
        Thread.currentThread().join();
    }
}

并没有断开,仍然在执行

因此,CompletableFuture的异步任务如果超时异常try掉了,是不会停止执行的

相关文章
|
Java 数据安全/隐私保护
康复中心管理系统 毕业设计 JAVA+Vue+SpringBoot+MySQL
康复中心管理系统 毕业设计 JAVA+Vue+SpringBoot+MySQL
278 1
|
安全 应用服务中间件 网络安全
https安全证书如何申请 https证书申请流程及费用
  随着谷歌、百度等主流浏览器大力支持鼓励网站安装SSL证书进行https加密,保障网站安全,网站安装https证书已经成为一种趋势。那么,https安全证书如何申请?申请https证书需要什么?https证书申请多少钱?      一、什么是https证书?     https证书也就是SSL证书,网站通过申请SSL证书将http协议升级为https加密协议,搭建加密传输、身份认证的网络安全通道。
6442 0
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错之从specified offset启动没有问题,但是停机后从savepoint恢复则报错binlog被purge(实际文件还在),如何处理
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
8月前
|
网络协议 Unix Linux
# 2个类轻松构建高效Socket通信库
本文介绍了一种通过两个类`EpollEventHandler`和`IEpollEvent`构建高效Socket通信库的方法。该库支持TCP、UDP和Unix域套接字,采用I/O多路复用技术(如epoll),提升并发处理能力。通过抽象基类和具体事件类的设计,简化了API使用,便于开发者快速上手。文章还提供了服务端与客户端的实例代码,展示其在实际项目中的应用效果。此Socket库适应嵌入式环境,功能定制性强,有助于减少外部依赖并提升维护效率。
256 104
# 2个类轻松构建高效Socket通信库
|
流计算
Flink CDC在运行过程中遇到"Could not upload job files"的问题
Flink CDC在运行过程中遇到"Could not upload job files"的问题
442 1
|
SQL 资源调度 Java
Flink问题之动态配置如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
346 1
|
前端开发 easyexcel Java
springboot使用EasyExcel导入数据(获取行号)
springboot使用EasyExcel导入数据(获取行号)
1459 1
|
Java Maven
成功解决IDEA中建立新项目Maven会默认选择配置(图解详细说明)
这篇文章提供了在IntelliJ IDEA中设置新项目的Maven配置的详细步骤,包括如何通过菜单路径进入设置,选择Maven配置,以及展示设置后的效果,还提供了Maven的安装教程和解决导入项目时jar包下载问题的方案。
成功解决IDEA中建立新项目Maven会默认选择配置(图解详细说明)
|
流计算
flink 单作业模式部署提交作业爆:Trying to access closed classloader. Please check if you store classloaders direc
flink 单作业模式部署提交作业爆:Trying to access closed classloader. Please check if you store classloaders direc
flink 单作业模式部署提交作业爆:Trying to access closed classloader. Please check if you store classloaders direc