【问题标题】:What do tasks submitted to ScheduledExecutorService do while "waiting" to run提交给 ScheduledExecutorService 的任务在“等待”运行时做了什么
【发布时间】:2018-07-04 15:38:53
【问题描述】:
如果我有这样的事情
scheduledExecutorService.schedule(task,60, TimeUnit.SECONDS);
在这 60 秒还没有结束时,“任务”会发生什么。它会消耗资源吗?因此,下一个问题和我的具体用例是,如果我有很多“任务”要安排,那会是内存/资源效率吗?我的任务是短暂的,但我担心将数百个任务安排到 scheduleExecutorService 的影响。
【问题讨论】:
标签:
java
concurrency
java.util.concurrent
【解决方案1】:
在这 60 秒还没有结束时,“任务”会发生什么。它会消耗资源吗?
它在 PriorityQueue 中等待,所以是的,它使用了一些资源。
因此,下一个问题和我的具体用例是,如果我有很多“任务”要安排,那会是内存/资源效率吗?
并不比将它们存储在队列中差多少。
我的任务是短暂的,但我担心将数百个任务调度到 scheduleExecutorService 的影响。
假设每个任务使用 1 KB,您将浪费 100 KB。不太可能成为问题。
假设每个任务使用 1 GB,那么您可能会遇到问题。我建议你换一种方式。