ScheduledThreadPoolExecutor

ScheduledThreadPoolExecutor

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

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

有人可以告诉我是否可以在不围绕ScheduledThreadpoolExecutor编写自己的包装的情况下实现我的目标吗?

提前致谢!

最佳答案

其实你可以做到,但是它不是很明显:

  • 创建一个新的ScheduledThreadPoolExecutor
  • 在构造函数中,将核心线程设置为所需的最大线程数。
  • 设置执行程序
  • 的keepAliveTime
  • ,最后让核心线程超时
    m_Executor = new ScheduledThreadPoolExecutor ( 16,null );
    m_Executor.setKeepAliveTime ( 5, TimeUnit.SECONDS );
    m_Executor.allowCoreThreadTimeOut ( true );
    

    尽管
  • ,这仅适用于Java 6

    关于java - ScheduledThreadPoolExecutor和corePoolSize 0?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2335702/

    10-11 04:56