我试图理解CompletableFutureJava 8 如何与Java内存模型交互.在我看来,对于程序员的理智,理想情况下应该成立:
CompletableFuture - 在执行任何java.util.concurrent文档中有一条说明:
在提交
Runnable到执行之前的线程中的操作Executor- 在执行开始之前.同样的Callables提交给ExecutorService.
这表明第一个属性为true,只要完成未来的线程执行完成依赖阶段或将其提交给Executor.另一方面,在阅读CompletableFuture文档后,我不太确定:
为非异步方法的依赖完成提供的动作可以由完成当前的线程执行
CompletableFuture,或者由完成方法的任何其他调用者执行.
这让我想到了我的问题:
CompletableFuture?附录:
在具体示例中,请考虑以下代码:
List<String> list1 = new ArrayList<>();
list1.add("foo");
CompletableFuture<List<String>> future =
CompletableFuture.supplyAsync(() -> {
List<String> list2 = new ArrayList<>();
list2.addAll(list1);
return list2;
});
Run Code Online (Sandbox Code Playgroud)
能够保证所有的加入"foo"到list1是可见的lambda函数?是否保证添加 …
java java.util.concurrent java-memory-model java-8 completable-future