Is it preferable to use runnable instead of callable in java, in terms of performance?
我刚开始学习函数语言(scala),其中一个声明/建议是,"在进行多线程处理时,您应该尝试使用react而不是recieve"方法。为了清楚起见,react不返回任何值,但recieve返回任何值。他们有自己的理由支持这一建议。因为scala在JVM上工作。让我感到好奇的是,如果使用EDCOX1的"4"是比在Java中使用EDCOX1×5的代价更高的事务吗?
有没有人对此有过相同的经验或评论?
runnable和callback具有相同的"性能",因为它们只是接口。
这两个接口有轻微的API差异-必须使用与消费API兼容的类型;仅此而已。
这与演员中的scala或react与recieve无关;问题框本身进入了错误的角落。
- 不知道这个答案的目的是什么。问题是,如果Callable与Java中的Runnabl相比有一些性能上的差异。我没有比较Scala和Java或它们的API。
- @普拉泰克的目的是回答这个问题。runnable和callback具有相同的"性能",因为它们只是接口。-引号的使用意味着接口没有性能指标,因为它们只是签名契约;使用或使用接口的代码可能具有不同的性能特征。相关链接解释了1)不同的接口契约(没有提到"性能");2)响应/接收(这是一个不同且无关的主题)。雷克斯花了点时间给你拼出来。
- 没人料到在作家大会上会有人在争论"C"在后面。
嗯,你真的把不同的概念混在一起了。
使用react而不是receive的原因是每个拥有receive的参与者都需要自己的线程。所以每个演员都有一个线程。另一方面,react由一个线程池处理,该线程池将在该参与者上运行该消息,然后转到下一个参与者和消息。(这真的只允许你做出反应——你不能等待一定的时间。)
另一方面,EDCOX1 4和EDCOX1×5接口只是在Java中封装代码的方法,这取决于您是否只希望它完成(EDCOX1×4)或返回一个值(EDOCX1?5)。接口本身在性能上没有任何差别,但是为了让Callable返回值返回给您,还需要做一些额外的事情,因此如果您可以用任何一种方式编写它,您最好使用只需要Runnable的东西。(实际上,这可能意味着启动一个线程而不是一个未来。)但是实现细节非常重要,以至于您不能单独在接口的基础上做出任何一般性的建议。您需要知道接口实际上是如何在您调用的实际类中使用的。