首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.util.function中的可运行表示是什么?

java.util.function中的可运行表示是什么?
EN

Stack Overflow用户
提问于 2019-06-29 09:45:45
回答 1查看 2K关注 0票数 9

我最近在想,Runnable经常在功能上下文中使用。同时,根据javadoc,它的语义意义非常接近多线程,而在这种情况下并不总是使用它:

Runnable接口应该由其实例要由线程执行的任何类实现。类必须定义一个没有参数的方法,称为run。此接口旨在为希望在活动时执行代码的对象提供通用协议。例如,Runnable是由类Thread实现的。活动意味着线程已经启动,但尚未停止。

Runnable 是否等同于 Supplier<Void> ?或者,Runnable 是否等同于 Function<Void,Void> ,为什么它不是供应商呢?如何使Runnable与已经提供的功能接口相一致。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-29 10:47:30

Runnable就是它。有一种有意的选择(请参阅Brian Goetz here),即不向java.util.function包添加一个与Runnable等效的功能接口。Java实现lambdas的主要思想之一(即它的所有用途都必须在需要某些功能接口的地方,并且lambda随后成为该功能接口的实现)的目的之一是确保Java8+或多或少地与设计好的预-lambda API兼容,而不需要为现有的大多数API发布不兼容的“v2”版本和更多的Java8+风格的API。

引入Runnable的一个变体仅仅是为了让它存在于java.util.function包中,这与这种想法是背道而驰的。

请注意,RunnableSupplier<Void>Function<Void, Void>可能感觉非常相似,但在javaland中完全不兼容。Void没有什么特别之处;它只是一种类型,与任何其他类型一样。例如,如果您正在制作一个Supplier<Void> lambda,那么您实际上需要返回一些东西,并且只能返回null;没有一种非黑客的方法来创建Void类型的实例。而对于void,您不必(也不能)。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56816550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档