当前位置: 首页 > 面试题库 >

ExecutorService.invokeAll不支持可运行任务的集合

艾宏远
2023-03-14
问题内容

想要通过ExecutorService的
invokeAll(..)方法运行可运行任务的集合。但这目前尚不支持( 仅支持Callable任务的集合

有什么具体原因吗?做类似事情的替代方法是什么。


问题答案:

只需将可运行对象转换为可调用对象:

List<Callable<Void>> callables = new ArrayList<>();
for (Runnable r : runnables) {
    callables.add(toCallable(r));
}
executor.invokeAll(callables);

private Callable<Void> toCallable(final Runnable runnable) {
    return new Callable<Void>() {
        @Override
        public Void call() {
            runnable.run();
            return null;
        }
    };
}


 类似资料:
  • 运行单个采集任务 vendor/bin/imi crawler/run -name task1 运行多个采集任务 vendor/bin/imi crawler/run -name task1,task2 运行所有采集任务 vendor/bin/imi crawler/run

  • 问题内容: 我正在编写代码。在我获得android v 9.0(Pie)的更新之后,它在版本8(Oreo)上运行良好,并且应用突然停止工作。检查后,我在我的Asyn任务中收到一条错误消息,指出以下错误: 任何人都可以帮我解决这个问题的确切原因,因为它之前工作得很好。先感谢您。 问题答案: 我也遇到了同样的问题,但是在清单文件中添加以下代码后,问题得到解决 作为参考,您还可以检查以下网址:https

  • 我们继续上一章节的内容,大家应该记得我们 Lua 代码中是如何完成 ngx_postgres 模块调用的。我们把他简单改造一下,让他更接近真实代码。 local json = require "cjson" function db_exec(sql_str) local res = ngx.location.capture('/postgres',

  • 我是redis的新手,我刚刚使用redis几个月了。目前我使用的是2.8.x稳定版本,但我试图使用3.0.0来导入redis集群功能。我使用java jedis作为客户机,这是我的问题:我发现jedis client的最新版本支持redis cluster lua脚本(jediscluster.evalsha),但我在哪里都找不到管道和事务相关的函数,所以我想知道是jedis还没有实现它(管道、事

  • 当我想要在neo4j服务器上持久化数据时出现此错误。你觉得问题可能出在哪? 我的pom.xml如下所示 我的controller类如下所示: 我的公司节点如下 我的人节点如下 我可以成功启动spring boot应用程序和tomcat servlet服务于端口8080。 但当我在Postman上执行此操作时,我收到标题上的错误:org.neo4j.driver.exceptions.cliente

  • 我的Spring Boot初始化遇到了麻烦。我在一个简单的Spring Boot项目中有这个结构。