java - Java 8 中的 completableFuture 是否可以扩展到多核?

标签 java multithreading java-8 completable-future

假设我有一个线程调用一堆返回 completablefuture 的方法,然后说我将它们全部添加到列表中,最后我执行 completablefutures.allof(list_size).join()。现在列表中的 future 可以扩展到多个核心吗?换句话说, future 是否被安排到多个内核中以利用并行性?

最佳答案

CompletableFuture 表示与某些 Executor 关联的任务.如果你没有明确指定执行器(例如,你使用 CompletableFuture.supplyAsync(Supplier) 而不是 CompletableFuture.supplyAsync(Supplier, Executor)) ,那么普通的 ForkJoinPool 被用作执行器。这个池可以通过 ForkJoinPool.commonPool() 获得,默认情况下它创建与您的系统拥有的硬件线程一样多的线程(通常是核心数,如果您的核心支持超线程,则将其加倍)。所以一般来说,是的,如果您使用所有默认值,那么多个核心将用于您可完成的 future 。

关于java - Java 8 中的 completableFuture 是否可以扩展到多核?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37582196/

相关文章:

Java 泛型不适用于参数 List<Object>

java - log.info (“dsasdds {}” , var) 和 log.info (“dsasdds ” + var) 之间的区别?

java - Java 中的视频缩略图

c# - 将阻塞调用包装为异步以实现更好的线程重用和响应式 UI

java - 如何使用当前线程来处理一个工作队列?

java - 编译测试库不编译接口(interface)的静态方法(Java 8)

java - sonarqube 分支覆盖范围显示断言选项太多

java - Spring 3 的新特性是什么(与 Spring 2.5 相比)?

java - 海森堡 : Thread doesn't run without a sysout

java - 选择 JFXCombobox 项目并发送到新的 Combobox