首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >executor Service多线程

executor Service多线程
EN

Stack Overflow用户
提问于 2015-12-02 18:00:45
回答 4查看 62关注 0票数 0

我在我的应用程序中使用了ExecutorService executor = Executors.newFixedThreadPool(10)。这是一个静态变量。

corePoolsize是10个线程。假设所有10个线程当前都在运行,并分配了一个任务。我想知道如果我再创建一个任务并尝试运行它会发生什么。

我在我的系统中尝试了,但我看到的是任务正在运行,没有任何问题。

EN

回答 4

Stack Overflow用户

发布于 2015-12-02 18:05:18

当您在所有线程当前都处于活动状态时提交新任务时,该任务将以FIFO方式添加到队列中,并在一个线程可用时进行处理。这个队列是无界的,所以它可以容纳的最大元素是Integer.MAX_VALUE

这在Executors.newFixedThreadPool的Javadoc中得到了回答

如果在所有线程都处于活动状态时提交其他任务,则它们将在队列中等待,直到有线程可用为止。如果任何线程在关机前的执行过程中由于失败而终止,则在需要执行后续任务时,将有一个新线程取而代之。

票数 2
EN

Stack Overflow用户

发布于 2015-12-02 18:05:04

直接取自Javadoc

如果在所有线程都处于活动状态时提交其他任务,则它们将在队列中等待,直到有线程可用为止

票数 1
EN

Stack Overflow用户

发布于 2015-12-02 18:27:44

Javadoc

在任何时候,至多"nThreads“线程都将是活动的处理任务。

可能是您之前执行的任何任务由于某些异常而被终止。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34039794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档