- public static Task whenAll(Collection> tasks)
- public static Task> whenAllResult(final Collection> tasks)
应用 call 办法,履行一个义务,同时创建 Task
- public static Task call(final Callable callable, Executor executor,
- final CancellationToken ct)
链接子义务
应用 continueWith 办法,链接一个子义务,如不雅前行义务已经履行完成,则急速履行当前义务,不然参加队列中,等待。
- public <TContinuationResult> Task<TContinuationResult> continueWith(
- final Continuation<TResult, TContinuationResult> continuation, final Executor executor,
- final CancellationToken ct)
应用 continueWithTask 办法,在当前义务之后链接另一个义务链,这种做法是为了知足那种将部分义务组合在一路分别出去,作为公共义务的场景,他接收将别的一个完全自力的义务链,追加在当前履行的义务后面。
- public <TContinuationResult> Task<TContinuationResult> continueWithTask(
- final Continuation<TResult, Task<TContinuationResult>> continuation, final Executor executor,
- final CancellationToken ct)
应用 continueWhile 办法链接子义务,与 continueWith 差别在于,他有一个 predicate 表达式,只有当表达式成立时,才会追加子义务,如许做是在履行义务前可以做一个拦截操作,也是为了不破环链式调用的┞符体风格。
- public Task<Void> continueWhile(final Callable<Boolean> predicate,
- final Continuation<Void, Task<Void>> continuation, final Executor executor,
- final CancellationToken ct)
应用>
撤消义务
- CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
- CancellationToken token = cancellationTokenSource.getToken();
- Task.call((Callable<String>) () -> null,
- Task.BACKGROUND_EXECUTOR,
- token);
- // 撤消义务
- cancellationTokenSource.cancel();
关于异常的处理,全部机制下来,每个义务作为一个自力的单位,异常会被同一捕获,是以不必针对义务中的办法进行零丁的处理。
如不雅应用了 continueWith 链接义务,那么当前义务的的异常信息,将会保存在当前 Task 中鄙人行义务中进行处理,下行义务也可以不处理这个异常,直接履行义务,那么这个异常就到这里停止了,不会再向下传递,也就是说,只有下行义务才知道当前义务的结不雅,不管是成功照样异常。
当然了,如不雅义务之间有接洽关系,因为上行义务的异常极大年夜可能造成当前义务的异常,那么当前义务异常的信息,又会向下传递,然则上行义务的异常就到这里为止了。
复竽暌姑性
推荐阅读
Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践美团外卖此前也推出了“O2O及时配送智能调剂体系”。据其颁布的数据显示,上线该体系后,配送员单均配送时长>>>详细阅读
本文标题:「Android」Bolts-更简单的完成线程调度和任务管理
地址:http://www.17bianji.com/lsqh/39148.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示