猿问

java中的可调用与供应商接口

和包中的Callable和Supplier功能接口分别具有以下签名-java.util.concurrentjava.util.function


public interface Callable<V> {

    V call() throws Exception;

}


public interface Supplier<T> {

    T get();

}

是否有一些特定的用例,其中每一个都比另一个更适合?


海绵宝宝撒
浏览 232回答 3
3回答

翻阅古今

除了明显的 Callable 抛出异常之外,区别在于语义。它们有不同的名称,因为它们代表不同的事物。目的是让代码更容易理解。当您使用 Callable 时,您的接口选择意味着该对象将由另一个线程执行。当您使用 Supplier 时,您暗示它只是一个向另一个组件提供数据的对象。

扬帆大鱼

来龙去脉对于Runnableand&nbsp;Callable,它们从 Java 6 开始就成为Executor并发包的一部分。这意味着它们都准备好提交给 an并异步运行。这里Callable有一个具体的用法。而对于Runnable(0 in 0 out)、Supplier(0 in 1 out)、Consumer(1 in 0 out) 和Function(1 in 1 out),它们自 Java 8 以来一直是功能特性的一部分。所有这些都准备好了由 lambda 友好的东西处理,比如CompletableFuture.&nbsp;这里Supplier只是指一个没有任何输入参数但有返回值的函数,这是高度抽象的。0 in(参数)1 英寸(参数)0 出(返回)RunnableConsumer1 出(退回)SupplierFunction
随时随地看视频慕课网APP

相关分类

Java
我要回答