5

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

4

1 回答 1

-3

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

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

super(min, max, keepAliveTime, TimeUnit.NANOSECONDS,
   new CustomQueue(), threadFactory);
于 2012-11-22T14:17:34.763 回答