是否有默认的ExecutorService,或者我注定要创建一个并维护它以获取Future objetcs?

Tar*_*Tar 6 java concurrency multithreading android java-7

根据Future我的理解,获得a的唯一方法是使用an ExecutorService,例如通过获取Executors.newFixedThreadPool(10)(顺便说一句,你如何使用多少线程?是否有一些拇指规则?).

所以我不明白,我是否应该使用:

ExecutorService executorService = Executors.newFixedThreadPool(n);
Run Code Online (Sandbox Code Playgroud)

然后保存它(例如在某些顶层IoC)并executorService在需要新的时候调用它Future

是不是像ExecutorService我可以使用的默认Java内置,从而避免了ExecutorService初始化和维护的唠叨?

Dmi*_*yuk 9

默认 Java 的内置 ExecutorService

ForkJoinPool.commonPool() -返回公共池实例。这个池是静态构建的;它的运行状态不受尝试 shutdown() 或 shutdownNow() 的影响。然而,这个池和任何正在进行的处理都会在程序 System.exit(int) 时自动终止...

Future<?> future = ForkJoinPool.commonPool().submit(() -> { /* something to do */}) ;
Run Code Online (Sandbox Code Playgroud)

但还有一种更现代的方式CompletableFuture

CompletableFuture<Void> future = CompletableFuture.runAsync(() -> { /* something to do */});
Run Code Online (Sandbox Code Playgroud)


Sol*_*low 3

是不是有一个默认的 Java 内置 ExecutorService 我可以使用...?

Java8中有。

阅读 的 Javadoc java.util.concurrent.CompletableFuture.supplyAsync(...)