【发布时间】:2018-02-04 09:22:12
【问题描述】:
我目前正在创建一个使用执行器和完成服务同时执行多个任务的小型框架。我有另一个独立运行的线程,它监视完成服务并每 2 秒轮询一次期货以检查结果。当任务失败时,我想通过提交回来重新执行它。我最多想重试 3 次。我现在需要一个集合,它可以让我存储任务 ID、任务对象的引用以及尝试重试的次数,这将是一个整数,同时将任务 ID 作为唯一键。目前我正在使用 2 个哈希映射。一个用于存储 ID 和引用,另一个用于存储 ID 和重试次数。
编辑我的问题是我需要一个集合的建议,它可以让我通过将任务 ID 作为唯一键来检索任务引用和重试计数比 2 更有效地存储 3 件事哈希映射。
【问题讨论】:
-
你有什么问题?
-
添加了问题。抱歉之前没有说清楚。
-
我建议将任务详细信息(如任务引用和重试计数)包装在一个类(如 TaskDetail)中,并将任务 ID 存储为键,并将包装类的相应对象(任务详细信息)存储为值.
-
但是这不会随着任务数量的增加而增加需要创建的对象的数量吗?
-
是的,这会增加对象的数量。因此,会有一些问题,例如 1. 您的应用程序在某个时间点将执行哪些任务?你的内存能承受这么大的内存吗?当任务成功执行时,将其从地图中移除。您也可以使用 WeakHashMap(完全取决于您的实际用例)。
标签: java collections concurrency