我代表特定的作业向Callable
提交ExecutorService
(我们可以将作业视为执行者的一部分内容服务)。
当然,在提交Callable
后,我会找回Future
。
我需要能够中断代表某个特定工作提交的Future
。为了实现这一点,我很想在我的java.utils.TreeSet
课程中使用Job
。但是,我关注每个Future
的独特性:它们会占据TreeSet
中的独特位置吗?如果没有,那么有更好的容器可供使用吗?
一个解决方案,如果容器不符合它,将扩展ExecutorService
并在每次提交时递增一个计数器,然后使用该计数器作为某种散列来保证唯一性。但这是我急于避免的开销,特别是如果我的担忧没有根据的话。
答案 0 :(得分:2)
TreeSet是一个有序集,您不需要对未来进行排序。
您也不需要处理重复项,因此不需要Set。
只需使用ArrayList
即可。
答案 1 :(得分:0)
由于将来没有自己的equals
实施,因此它将从this==obj
的{{1}}开始。由于Object
通常会返回不同的对象,因此您应该没问题。
但是,我认为任何容器(列表,集合,数组......)应该这样做以确定我建议使用ExecutorService
。
答案 2 :(得分:0)
如果我需要查找未来,我会将其存储在地图中。以id为关键,未来为价值。