ScheduledThreadPoolExecutors和自定义队列

时间:2012-11-22 14:07:29

标签: java multithreading concurrency executorservice executors

如果我使用ThreadPoolExecutor我有各种构造函数,我可以将自己的队列传递给池的工作队列。
现在我看到ScheduledThreadPoolExecutorThreadPoolExecutor的子类,但构造函数要少得多 有没有办法使用ScheduledThreadPoolExecutor并仍然使用我自己的工作队列?

1 个答案:

答案 0 :(得分:-3)

您可以扩展ScheduledThreadPoolExecutor类并使用与当前DelayedWorkQueue实现绑定的ScheduledThreadPoolExecutor不同的队列。请注意,DelayedWorkQueue只是BlockingQueue实现,在场景后面使用DelayQueue

但是如果你只需要配置min,max,keepAlive或其他参数(不需要更改DelayedWorkQueue),你只会扩展ThreadPoolExecutor(类似于ScheduledThreadPoolExecutor正在做)并且在你的构造函数中你会做类似于ScheduledThreadPoolExecutor构造函数现在正在做的事情,委托给ThreadPoolExecutor,如:

super(min, max, keepAliveTime, TimeUnit.NANOSECONDS,
   new CustomQueue(), threadFactory);