如果我使用ThreadPoolExecutor
我有各种构造函数,我可以将自己的队列传递给池的工作队列。
现在我看到ScheduledThreadPoolExecutor
是ThreadPoolExecutor
的子类,但构造函数要少得多
有没有办法使用ScheduledThreadPoolExecutor
并仍然使用我自己的工作队列?
答案 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);