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

ExecutorService.submit(可运行任务,T结果)中的“结果”有什么作用?

呼延智明
2023-03-14
问题内容

看着它只是说的javadocs

<T> Future<T> submit(Runnable task, T result)

提交要执行的Runnable任务,并返回代表该任务的Future。Future的get方法将在成功完成后返回给定的结果。

参数:

任务-提交的任务

结果-要返回的结果

但是结果如何呢?它在那里存储什么吗?它是否仅使用结果的类型来指定类型Future<T>


问题答案:

它对结果没有任何作用-保留它。任务成功完成后,调用future.get()将返回您传递的结果。

这是Executors $ RunnableAdapter的源代码,它显示任务运行后,将返回原始结果:

static final class RunnableAdapter<T> implements Callable<T> {
    final Runnable task;
    final T result;
    RunnableAdapter(Runnable  task, T result) {
        this.task = task;
        this.result = result;
    }
    public T call() {
        task.run();
        return result;
    }
}

是的,结果的通用类型应与返回的Future的通用类型匹配。



 类似资料:
  • 我用谷歌搜索了这个,但仍然无法得到一个坚实的理解。我找不到任何使用构造函数的特定示例 Java博士说 未来提交(可运行任务,T结果) 提交一个可运行任务以供执行,并返回一个表示该任务的未来。Future 的 get 方法将在成功完成后返回给定的结果。 看到这一点,我的理解是在任务完成后的未来任务。get(),它将返回传递的给定结果对象,该对象与“可运行”作业无关。这是一种“可运行”作业完成的信号。

  • 问题内容: 问题 我已经将一个长期运行的任务划分为多个逻辑子任务,因此我可以在每个子任务完成时报告结果。但是,我正在尝试报告将永远无法完成的任务的结果(而不是不断产生价值),并且正在使用现有的解决方案来做到这一点。 背景 我正在为我编写的某些Python程序构建Web界面。用户可以通过Web表单提交作业,然后返回查看该作业的进度。 假设我有两个函数,每个函数都可以通过单独的形式进行访问: :执行大

  • 下面是我的gulpfile。我正在尝试从scss生成缩小的css,然后使用gulp-rev重命名它。运行gulp Clean:资产然后gulp scss,然后gulp css工作完美。但运行gulp build并不能完成这项任务。缩小的css存储在./assets/css中,但重命名的css没有存储在./public/assets中

  • 问题内容: 什么是%在计算?我似乎无法弄清楚它的作用。 例如,它算出计算的百分比吗:显然等于0。如何? 问题答案: (取模)运算符从第一个参数除以第二个参数得出余数。首先将数字参数转换为通用类型。右零参数引发ZeroDivisionError异常。参数可以是浮点数,例如3.14%0.7等于0.34(因为3.14等于4 * 0.7 + 0.34。)模运算符始终产生与第二个操作数具有相同符号的结果(或

  • 本文向大家介绍什么是用例执行结果?相关面试题,主要包含被问及什么是用例执行结果?时的应答技巧和注意事项,需要的朋友参考一下 通过,不通过,未运行,无法运行

  • 问题内容: 我正在寻找一个返回列表的t-sql脚本,该列表显示来自Table1分组的每个第二个值。 例如,我有以下数据(表1),并想要所需的结果列表: 所需的摘要列表: 我考虑使用“选择不同的和左外部联接”来做某事,但是我无法使其正常工作。可能我需要一个行编号,但无法弄清楚该怎么做。有人可以帮助我吗? 下面是我用来制作和填充Table1的脚本: 问题答案: 您可以使用和: 怎么运行的: 使用会根据