我有一个固定的线程池,该线程池可以随时(带有队列)运行7个并发线程,并且我想将其变成仅运行7个并发作业但可以排队/调度更多线程的调度线程池。

阅读文档并没有真正帮助我。

newFixedThreadPool



newScheduledThreadPool



我不明白的是,corePoolSize和nThreads是同一件事吗?预定线程池是否真的是固定线程池的子集,这意味着我可以将预定线程池用作可以对延迟的任务进行排队的固定线程池?

最佳答案

是的,只是增加了调度功能,它们基本上是同一件事。 ScheduledThreadPoolExecutor甚至扩展了ExecutorService(ThreadPoolExecutor)的默认实现。

nThreads和corePoolSize是要产生的线程数。对于固定的执行者,总是一样的。在其他实现中,它在min(corePoolSize)和max(maxPoolSize)之间变化。

关于固定线程池和计划线程池之间的Java差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6037693/

10-10 12:46