我的Vector
env中有multithreaded
,我需要将其前5个元素传递给threadpool
。这周围有什么最好的做法吗? (我的意思是使用java util类)
我可以在synchronized
块内完成并循环遍历向量,直到找到前5个元素。我想知道这是正确的方法。
更新部分------
请找到我需要解决的实际问题。
A类将有一个向量(根据优先级排序。这将以高频率更新。我需要获得前5个元素)
B类将myOwnThreadPool
扩展java.util.ThreadPoolExecutor
并覆盖它的afterExecute
方法。 (池大小为5)
A类将从向量中获取前5个元素,并将其发送到B类池进行处理。
一旦afterExecute
方法通知一个线程被返回,我将从vector
中选择第一个最重要的元素(在A类中/具有最高优先级)并将其发送到池中过程
我认为现在我的问题为你们提供了一个更好的主意。
谢谢大家的答复/指导,非常欢迎进一步的建议。
答案 0 :(得分:6)
Vector
提供subList
方法,您可以按如下方式使用:
List five = myVector.subList(0, 5);
这不会复制元素,只会在向量中构建视图。您可以按如下方式添加复制:
List five = new List();
Collections.copy(five, myVector.subList(0, 5));
答案 1 :(得分:1)
请不要使用Vector。请考虑使用Collections.synchronizedList()
创建同步列表。
List list = Collections.synchronizedList(new ArrayList());
...
synchronized(list) {
Iterator i = list.iterator(); // Must be in synchronized block
while (i.hasNext())
foo(i.next());
}