我使用java.util.ExecutorService
来处理任务,有时只使用一个工作人员。不是我想添加像空闲任务这样的东西,从数据库中预加载数据和类似的东西,而没有任何事情发生,用户选择了一些项目。
我的第一个想法是在用户选择某项内容时将其添加为任务,因为当用户开始与选择进行交互时,数据是必需的,并且必须以任何方式加载。
这种方法的问题在于,当用户选择另一个项目时没有对第一个选择做任何事情,那么Executor中的这个巨大的任务只会使一切变慢。
任何简单的想法我怎么能开始这样的事情?我真的不想建立一个庞大的管理类来处理它并对任务或类似的东西进行分类。
答案 0 :(得分:1)
那么使用PriorityBlockingQueue呢?将您的任务保留在该队列中,将空闲任务置于低优先级,以便它们始终位于队列的末尾。实现池的可运行性,以便它们只从队列中获取最高优先级的任务并执行它。
为了确保执行空闲任务将被更重要的任务替换,您可以将它们实现为以短块执行,并在每个块完成后放回队列中。如果在此期间将更重要的内容放入队列中,则接下来将进行更新,如果没有,将再次从队列中获取空闲任务。