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