我有一个 Web 服务,它在返回结果之前会进行多次小计算。我想使用ExecutorService
提供Executors.newFixedThreadPool()
的方式来实现 Master - Worker 模式(即调用invokeAll
并让线程等待所有结果完成)。理想情况下,所有 web 服务线程都使用相同的执行器服务,这样它们就不必都创建自己的线程池,它们可以共享一个用完系统所有处理时间的大池。
我对这种方法有疑问:
invokeAll
从多个线程访问函数是否安全。- 执行程序服务是否会按顺序处理请求(即首先来自线程 1 的所有任务,然后是线程
- 有没有办法说 10 个工作线程,并且可用的最大线程数取决于传入的请求数,所以假设我们有 1 个请求,它使用所有 10 个线程来处理该请求。如果您有 2 个请求,则每个请求将它们拆分为 5 个线程等。