ExecutorService 空闲任务

ExecutorService idle tasks

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

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

这种方法的问题是,当用户选择另一个项目而不对第一个选择做任何事情时,执行器中就会有这个巨大的任务,这只会让一切变得更慢。

有什么简单的想法可以让我开始这样的事情吗?我真的不想建立庞大的管理层 class 来处理它并 class 完成任务或类似的事情。

那么使用 PriorityBlockingQueue 呢?将您的任务保留在该队列中,为空闲任务赋予低优先级,以便它们始终位于队列的末尾。实施您的池的可运行对象,以便它们只需从队列中获取最高优先级的任务并执行它。

为确保执行的空闲任务将被更重要的任务取代,您可以将它们实现为以短块执行,并在每个块完成后放回队列中。如果在此期间队列中放入了更重要的任务,则下一个任务将被执行,否则,空闲任务将再次从队列中获取。