在“等待”运行时提交给ScheduledExecutorService的任务会做什么

时间:2018-07-04 15:38:54

标签: java concurrency java.util.concurrent

如果我有这样的东西

scheduledExecutorService.schedule(task,60, TimeUnit.SECONDS);

在60秒还没有到时,“任务”发生了什么。它会消耗资源吗?因此,下一个问题和我的特定用例是,如果我要安排很多“任务”,那会提高内存/资源的使用效率吗?我的任务期限很短,但我担心将数百个任务调度到ScheduledExecutorService会带来什么影响。

1 个答案:

答案 0 :(得分:1)

  

在60秒还没有到时,“任务”发生了什么。它会消耗资源吗?

它在PriorityQueue中等待,所以是的,它使用了一些资源。

  

因此,下一个问题和我的特定用例是,如果我要计划很多“任务”,那会提高内存/资源的使用效率吗?

与其将它们存储在队列中一样糟糕。

  

我的任务期限很短,但是我担心将数百个任务调度到ScheduledExecutorService的含义。

假设每个任务使用1 KB,您将浪费100 KB。可能不是问题。

假设每个任务使用1 GB,则可能有问题。我建议你用另一种方式。