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);
Run Code Online (Sandbox Code Playgroud)
java.util.concurrent.Executors
无非是构建执行器的常见安排的静态便捷方法的集合。
如果您想要 中未提供的特定内容Executors
,请随意构建您自己的实现类实例,并使用 中的示例Executors
作为指导。
归档时间: |
|
查看次数: |
4280 次 |
最近记录: |