为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

海绵宝宝撒 2021-09-03 16:31:57
和包中的Callable和Supplier功能接口分别具有以下签名-java.util.concurrentjava.util.functionpublic interface Callable<V> {    V call() throws Exception;}public interface Supplier<T> {    T get();}是否有一些特定的用例,其中每一个都比另一个更适合?
查看完整描述

3 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

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


查看完整回答
反对 回复 2021-09-03
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

来龙去脉

对于Runnableand 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. 这里Supplier只是指一个没有任何输入参数但有返回值的函数,这是高度抽象的。


0 in(参数)1 英寸(参数)
0 出(返回)RunnableConsumer
1 出(退回)SupplierFunction


查看完整回答
反对 回复 2021-09-03
  • 3 回答
  • 0 关注
  • 231 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信