【发布时间】:2012-02-03 19:22:15
【问题描述】:
假设我有一个迭代器它返回一些类 CustomClass 的东西。迭代器有“许多”CustomClass 可以遍历。此外,假设用户输入的内容使我的程序决定我的程序在任何时候只能运行 5 个线程。
在某种程度上,预计会发生这样的事情:
for(int i = 0; i < 5 && it.hasNext(); i++) {
new Thread(it.next()).start();
}
现在,再次只允许五个,并且迭代器中有更多元素。但是在一个线程完成其 run() 之后,我希望它调用 it.next() 并创建一个新线程。但问题是它没有在这个线程中定义。 CustomClass 甚至没有任何种类的 next() 方法。我该如何解决这个问题,以便每个线程都可以有效地“访问”迭代器?
【问题讨论】:
-
如果你不想同时做多件事情,不要使用线程。
-
不是我不想同时做多件事情,而是我想做但是有限制。例如,假设迭代器中的对象运行一个加载 URL 的方法,并从该 URL 加载图像以对其进行处理。鉴于有些人(如果不是很多)的连接较弱,他们可能希望一次只同时加载 5 个页面+图像,而不是 20 个以上,以便能够在不受干扰的情况下仍然观看 YouTube 上的视频。跨度>
标签: java multithreading iterator