让我们举一个例子:我们有四种方法:
CompletableFututre<Void> loadAndApply(SomeObject someObject);
CompletableFuture<SomeData> loadData();
A processA(SomeData data);
B processB(SomeData data);
loadAndApply结合了所有其他方法。loadData长时间获取数据。然后我们将设置someObject.A为运行的结果,processA(data)并将其设置someObject.B为运行的结果。processB(data) 我们不能同时应用这两者processA,processB因为processA它们只能在上运行,swingExecutor并且processB只能在上运行backgroundExecutor。
所以我的问题是:我们可以以某种美观的方式将所有这些方法链接起来吗?
目前,我像这样启动它们:
CompletableFututre<Void> loadAndApply(SomeObject someObject) {
return loadData()
.thenApplyAsync(data -> { someObject.setA(processA(data)); return data; }, swingExecutor)
.thenAcceptAsync(data -> someObject.setB(processB(data)), backgroundExecutor);
}
有什么方法看起来比applyAsync实际上不对给定对象应用任何东西,只是将其返回给下一个未来更好吗?
胡子哥哥
相关分类