用于存储 java.util.concurrent.Future 实例的容器



我代表特定作业ExecutorService提交Callable(我们可以将作业视为在执行器服务上运行的事物的子集)。

当然,在提交Callable时,我会得到一个Future

我需要能够中断代表特定作业提交的Future。为了实现这一点,我很想使用嵌入到Job类中的java.utils.TreeSet。但是,我担心每个Future的独特性:他们会在TreeSet中占据独特的位置吗?如果没有,那么有没有更好的容器可以使用?

如果容器不符合要求,一种解决方案是扩展ExecutorService并在每次提交时增加一个计数器,然后将该计数器用作某种保证唯一性的哈希值。但这是我渴望避免的开销,特别是如果我的担忧是没有根据的。

树集是一个排序集,你不需要对你的未来进行排序。

您也不需要处理重复项,因此不需要 Set。

简单地使用ArrayList应该没问题。

由于 future 没有自己的实现equals它将从 Object 回退到this==obj。由于通常ExecutorService会返回不同的对象,因此您应该没问题。

但是,我认为任何容器(列表,集合,数组,...)都应该这样做以确保我建议使用(Array)List

如果我需要查找未来,我会将其存储在地图中。以 id 为键,以未来为值。

最新更新