ScheduledThreadPoolExecutor 和 corePoolSize 0?

2024-01-12

我想要一个ScheduledThreadPoolExecutor如果没有工作要做,它还会停止最后一个线程;如果有新任务,它还会创建线程(并使线程保持活动状态一段时间)。但是一旦没有更多的工作要做,它应该再次丢弃所有线程。

我天真地将其创建为new ScheduledThreadPoolExecutor(0)但结果是,不会创建任何线程,也不会执行任何计划任务。

谁能告诉我,如果我不编写自己的包装器,是否可以实现我的目标ScheduledThreadpoolExecutor?

提前致谢!


实际上你可以做到,但它并不明显:

  • 创建一个新的 ScheduledThreadPoolExecutor
  • 在构造函数中将核心线程设置为您想要的最大线程数
  • 设置执行器的keepAliveTime
  • 最后,允许核心线程超时

    m_Executor = new ScheduledThreadPoolExecutor ( 16,null );
    m_Executor.setKeepAliveTime ( 5, TimeUnit.SECONDS );
    m_Executor.allowCoreThreadTimeOut ( true );
    

    但这仅适用于 Java 6

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ScheduledThreadPoolExecutor 和 corePoolSize 0? 的相关文章

随机推荐