【问题标题】:ExecutorService idle tasksExecutorService 空闲任务
【发布时间】:2015-07-31 12:28:42
【问题描述】:

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

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

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

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

【问题讨论】:

  • 只是为了澄清您的问题:您是否需要某种任务优先级,并且仅在更重要的任务完成的工作不多时才执行低优先级(空闲)任务?
  • 其实是的,这正是我想要的!这听起来比我想象的要简单得多......

标签: java executorservice


【解决方案1】:

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

为确保正在执行的空闲任务将被更重要的任务替换,您可以实现它们以短块执行,并在每个块完成后放回队列中。如果在这期间有更重要的东西被放入队列中,则接下来会被取走,如果没有,则从队列中再次取出空闲任务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-16
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    相关资源
    最近更新 更多