这是关于任务.
task.continueWith()和之间的区别task.continueWithTask()是什么?你能为每个人提供一个例子吗?
Dou*_*son 12
continueWith和continueWithTask之间的主要区别是您传递给它的Continuation的泛型类型之一.
你可以将Continuation视为将某些输入类型转换为某种输出类型的东西.如果定义a Continuation<IN, OUT>,IN则then通过a 传递给其方法的输入类型在哪里Task<IN>,并且OUT是方法返回的类型.
在调用时continueWith,您传递一个Continuation<IN, OUT>,并且该then方法应该计算并返回OUT给定Task<IN>值作为输入的值.如果您没有要进行转换的阻塞工作,可以选择执行此操作,例如将整数数组减少为其元素的总和或计算String中的单词数.
在调用时continueWithTask,你传递一个Continuation<IN, Task<OUT>>,并且该then方法应该返回一个Task<OUT>最终生成OUT值的值,给定IN值作为输入.如果您能够将转换工作委派给现有的可重用任务,则可以选择此选项.
实际上,您不需要选择其中一个来完成您的工作.这是一个首选的风格问题,或者如果你有一个很好的Task准备委托你的对话而不是一个Continuation.通常,如果您有一系列转换链接在一起,则只使用Continuations.
这里的javadoc链接显示了Continuations的一些示例.另外,要了解更多信息,您可以在我的博客系列的第三部分中阅读它们.公平地说,continueWithTask是Task API的唯一部分,我没有直接讨论该系列中的任何地方,主要是因为它在概念上并没有太大差别continueWith.
只是为了补充Doug说的话,我会这样说:
continueWith将then方法的结果包装在一个Task. continueWithTask将不会; 它希望该then方法返回一个Task,从而避免任务中任务的双重包装.
continueWithTask 当你想要一起使用Continuation和TaskCompletionSource时,它是完美的.
| 归档时间: |
|
| 查看次数: |
1339 次 |
| 最近记录: |