Java 对于像Runnable这样的接口来说,这是个好名字,但会返回一个结果吗?

Java 对于像Runnable这样的接口来说,这是个好名字,但会返回一个结果吗?,java,naming,Java,Naming,我正在寻找一个界面的好名字,它有一个run方法,比如Runnable,但返回一个结果 我目前考虑的选项是: 计算->过于数学化,并且不是所有返回结果的东西都是计算 函数->非常接近我所看到的,但它仍然太数学化了 操作->是一个错误,因为它不需要产生结果 操作->这将是我目前最喜欢的,但从数学上讲,它可能只描述了一段关系,而不会产生一个更像条件的结果。和行动一样 Provider->Provider意味着将某物提供给某人/某物,这并不总是如此,因为返回这样一个runnable的结果是很常见的 供应

我正在寻找一个界面的好名字,它有一个
run
方法,比如Runnable,但返回一个结果

我目前考虑的选项是:

  • 计算->过于数学化,并且不是所有返回结果的东西都是计算

  • 函数->非常接近我所看到的,但它仍然太数学化了

  • 操作->是一个错误,因为它不需要产生结果

  • 操作->这将是我目前最喜欢的,但从数学上讲,它可能只描述了一段关系,而不会产生一个更像条件的结果。和行动一样

  • Provider->Provider意味着将某物提供给某人/某物,这并不总是如此,因为返回这样一个runnable的结果是很常见的

  • 供应商->见供应商

  • Task->是一个值得考虑的问题,但它会干扰调度程序执行的任务的另一种表示法

  • 工作->可能工作,但工作流程中的工作最好像任务一样保存

  • 作业->与任务相同

  • 流程->可能有效,但最好保留,并且并非所有结果都由实际流程生成(getter示例)

  • 这些是我找到的替代方案。最接近的赌注是供应商或结果供应商界面,但听起来很尴尬


    有没有人有更好的命名想法,或者知道哪些框架能够很好地使用现有的(或目前错过的)替代方案?

    现有的接口如何

    公共接口可调用{
    /**
    *计算结果,如果无法执行此操作,则引发异常。
    *
    *@返回计算结果
    *@如果无法计算结果,则引发异常
    */
    V call()抛出异常;
    }
    
    在JVM中内置并调用方法
    call()

    因此,
    Callable
    返回类型
    V
    ,它还可以抛出异常

    接口使用它来管理多线程处理


    是指向Oracle ExecutorService教程的链接

    您对制作人的看法如何?

    如果找不到合适的名称,您的设计可能有问题。计算机科学中只有两个难题:缓存失效和命名。-菲尔·卡尔顿。我喜欢OPs努力寻找一个合适的名字。虽然明确的问题是基于意见的,但这可能是一个XY问题,而潜在的X不是。这样一个接口已经存在,并且已经有了一个名称。我需要重新实现这些接口,以支持变量参数,并且可以用lambda表达式()表示。因此,我希望通过在整个平台/框架中重复使用某些名称(如producer)来找到足够好的名称,而不会增加混淆。Java 8的
    供应商
    可能是OP想要的-它没有
    抛出异常
    ,这一点没有提到。如果您的猜测是正确的,OP还可以通过一个接口扩展Callable,该接口覆盖了
    call()
    ,没有
    throws
    Callable.call()
    建议可以调用的东西可能有副作用,也可能没有副作用,并返回结果
    Supplier.get()
    建议一些主要目的是返回结果的内容。供应商提供的内容通常被建议已经存在。Callable并不是什么一针见血的东西,但runnable也相当广泛,所以我想我会走这条路,希望保留一些珍贵的名字,比如制作人或供应商,甚至运营/功能。制作人也非常接近,因为它产生了一个结果,它不符合Getter的想法,但非常接近。?这是我不能理解的。有什么帮助吗?雷达上没有这个。我想我会选择callable,因为它已经很老了,被接受了,并且可以与runnable区分开来。Producer更接近于它是什么,但最终Producer是我想要为Producer+Consumer模式保留的东西,当涉及到事件处理时,它也得到了实现。所以非常感谢你的建议。
    public interface Callable<V> {
      /**
       * Computes a result, or throws an exception if unable to do so.
       *
       * @return computed result
       * @throws Exception if unable to compute a result
       */
      V call() throws Exception;
    }