java - ExecutorService 空闲任务

标签 java executorservice

我使用java.util.ExecutorService来处理任务,有时只有一个工作人员。不是,我想添加诸如空闲任务之类的东西,在没有发生任何事情并且用户选择了某些项目的情况下从数据库预加载数据和类似的东西。

我的第一个想法是在用户选择某些内容时将其添加为任务,因为当用户开始与选择进行交互时,需要数据并且必须以任何方式加载。

这种方法的问题在于,当用户选择另一个项目而不对第一个选择执行某些操作时,执行器中就会出现这项艰巨的任务,这只会让一切变得更慢。

有什么简单的想法可以让我开始做这样的事情吗?我真的不想构建一个巨大的管理类来处理它并对任务或类似的东西进行分类。

最佳答案

那么使用 PriorityBlockingQueue 怎么样?将任务保留在该队列中,给空闲任务低优先级,以便它们始终位于队列的末尾。实现池的可运行程序,以便它们只需从队列中获取最高优先级的任务并执行它。

为了确保执行的空闲任务将被更重要的任务取代,您可以将它们实现为以短 block 执行,并在每个 block 完成后放回到队列中。如果同时有更重要的任务被放入队列中,那么接下来会取出它,如果没有,则会再次从队列中取出空闲任务。

关于java - ExecutorService 空闲任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31746236/

相关文章:

java - 在调用私有(private)方法的层次结构时,哪个方法应该更改字段?

java - 我如何在 Java 中获取打印机的品牌和型号?

java - 检测当前线程是否为 ExecutorService 线程

java - 更改 ScheduledThreadPoolExecutorService 的延迟而不终止服务

java - Spring任务执行器和调度器

java - 在 SERVLET 中解析日期时遇到问题

java - 类被实例化多次;如何知道正在调用的是哪一个?

java - 如何将对象序列化为 CSV 文件?

java - ExecutorService JProgressBar

java - 执行器仍在运行时完成的任务数