为什么Java Executors类没有提供预定的缓存线程池?

Executors
提供
newCachedThreadPool()
newScheduledThreadPool()
,但不提供
newCachedScheduledThreadPool()
,这里给出了什么?我有一个接收突发消息的应用程序,并且需要在每个消息的固定延迟之后安排相当长的处理步骤。时间限制不是非常严格,但如果我超过池大小,我宁愿在运行中创建更多线程,然后在不活动期间将它们修剪回来。有没有我在并发库中遗漏的东西,还是我需要自己编写?     
已邀请:
根据设计,ScheduledThreadPoolExecutor是固定大小。您可以使用提交到普通ExecutorService的单线程版本来执行任务。此事件线程+工作池相当容易协调,灵活性弥补了专用线程。我过去曾使用它来替换TimerTasks和其他非关键任务,以将公共执行程序用作系统范围的池。     
建议在这里为什么ScheduledThreadPoolExecutor只接受固定数量的线程?解决方法:
scheduledExecutor = new ScheduledThreadPoolExecutor(128); //no more than 128 threads
scheduledExecutor.setKeepAliveTime(10, TimeUnit.SECONDS);
scheduledExecutor.allowCoreThreadTimeOut(true);
    
java.util.concurrent.Executors
只不过是构建执行者共同安排的静态便利方法的集合。 如果你想要
Executors
不提供的特定内容,那么可以使用
Executors
中的示例作为指导,随意构建自己的实现类实例。     
像斯卡弗曼所说,
Executors
只是工厂方法的集合。如果您需要特定实例,您可以随时检查所有现有的
Executor
实现者。在你的情况下,我认为调用ScheduledThreadPoolExecutor的各种构造函数之一是个好主意。     

要回复问题请先登录注册