java - 线程池执行器 : changing corePoolSize at run time

标签 java concurrency executorservice

我有一个带有 corePoolSize=1maxPoolSize=1ThreadPoolExecutor,并由无界的 LinkedBlockingQueue 支持。

假设在时间 t,池中的单个线程正在处理任务 T0。队列中有一个任务T1。

在任务 T0 处理过程中设置 corePoolSize=0 会发生什么?

  • 单个线程将处理任务 T1,然后变得空闲并被销毁(因为新的 corePoolSize),或者
  • 单线程在处理完任务 T0 后变得空闲,从而被销毁,任务 T1 保留在队列中,直到稍后 corePoolSize 增加 >0 ?

在线程池执行器的上下文中,线程“空闲”到底意味着什么?

最佳答案

单线程也将处理任务 T1。之后闲置一段时间后可能会被销毁。

线程处于空闲状态的情况有很多。在下面的SO帖子中对此进行了解释: When is a Java thread idle?

关于java - 线程池执行器 : changing corePoolSize at run time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27813664/

相关文章:

java - 编译器无法识别 Lombok Getter 的覆盖方法

java - 使用 IntelliJ 制作 OrientDB 可执行 jar

java - Spring:单例/ session 范围和并发

iphone - NSOperation 中的 NSURLConnection 同步方法

concurrency - 何时使用破坏者模式以及何时使用工作窃取本地存储?

executorservice - 一段时间后调用 ExecutorService

java - 如何使用 gradle 插件在 netbeans 中获取项目来查找 native 库?

java - 在运行时添加 JDBC jar 时,没有找到适合 HSQL 数据库的 JDBC 驱动程序?

java - 当新线程运行时更大的线程池或额外的 ExecutorService?

java - 使用新数据刷新 JEditorPane