java - ScheduledThreadPoolExecutors 和自定义队列

标签 java multithreading concurrency executorservice executors

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

最佳答案

您可以扩展 ScheduledThreadPoolExecutor 类并使用与绑定(bind)到当前 ScheduledThreadPoolExecutor 实现的 DelayedWorkQueue 不同的队列。请注意,DelayedWorkQueue 只是在后台使用 DelayQueueBlockingQueue 实现。

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

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

关于java - ScheduledThreadPoolExecutors 和自定义队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13514441/

相关文章:

java - 离开 parent 时Android View 消失

java - 在 Java 中将 RSA key 对象导出到 XML

java - 在 Java 中的多个线程之间共享一个 int 或一个整数对象

c - 使用多线程读取文件

c# - 如何使用委托(delegate)在线程包装器类中传递方法?

c# - 是否有一个有利于读者的 ReaderWriterLockSlim 等价物?

java - 如何定期执行任务,但在某种程度上,直到最后一个步骤完成后才能开始步骤

java - 如何在标题栏添加按钮?

java - 更改 PriorityQueue 中元素的优先级

java - 如何在并行流上使用java map-reduce组合器