没有executor入参的supplyAsync,任务是谁执行的?
与系统环境和配置有关,一般来说,如果可用的CPU核数大于2,会使用Java 7引入的Fork/Join任务执行服务,即ForkJoinPool.common-Pool(),该任务执行服务背后的工作线程数一般为CPU核数减1,即Runtime.getRuntime(). availableProcessors()-1,否则,会使用ThreadPerTaskExecutor,它会为每个任务创建一个线程。
对于CPU密集型的运算任务,使用Fork/Join任务执行服务是合适的,但对于一般的调用外部服务的异步任务,Fork/Join可能是不合适的,因为它的并行度比较低,可能会让本可以并发的多任务串行运行,这时,应该提供Executor参数。
#函数式编程##java原理#27届毕业生-Java面试专辑 文章被收录于专栏
帮您起飞,助您着陆心仪大厂。


查看7道真题和解析