使用指定的超时调用invokeAll和InvokeAny调用覆盖在ThreadPoolExecutor中配置的覆盖设置吗?

时间:2013-08-09 18:13:30

标签: java singleton threadpool executorservice

在配置了核心,最大值,超时,时间单位和有界队列覆盖的invokeAll上调用invokeAnyThreadPoolExecutor,并在其呼叫中指定超时长度和单位执行任务时执行程序的超时设置?在invokeAll的情况下,这将在其中一个返回的期货上使用get方法时适用(您可以在get上指定额外的超时)。在invokeAny的情况下,它适用于调用本身。

ExecutorService threadPool = new ThreadPoolExecutor(coreSize, maxSize, poolTO, tu, new ArrayBlockingQueue<Runnable>(queueSize));

...并且在包含此threadPool对象的类中,我公开了submit,invokeAll和invokeAny,对于后两者,我没有公开超时设置,因为我选择使用与之相同的构造threadPool。我问这个问题,如果在我的小单例代理包装器类中公开它们会覆盖上面构造函数中定义的超时设置。

1 个答案:

答案 0 :(得分:1)

ThreadPoolExecutor超时实际上是一个保持活动值,它在将池缩小回核心大小之前等待TimeUnit的长度,而invokeAll和invokeAny超时是等待在这些方法中执行的时间长度在失败之前。