假设我有一个迭代器 it 返回 CustomClass 类的内容。迭代器有“许多”CustomClass 需要遍历。此外,假设用户输入的内容使我的程序决定我的程序在任何时刻只能运行 5 个线程。
在某种程度上,预计会发生这样的事情:
for(int i = 0; i < 5 && it.hasNext(); i++) {
new Thread(it.next()).start();
}
现在,再次只允许五个元素,并且迭代器中还有更多元素。但是在一个线程完成 run() 之后,我希望它调用 it.next() 并创建一个新线程。但问题是它没有在此线程中定义。 CustomClass 甚至没有任何类型的 next() 方法。我该如何解决这个问题,以便每个线程都可以有效地“访问”迭代器?
最佳答案
看看executors and thread pools Java 教程中的部分。基本思想是将您的工作排队,当线程“变得可用”时,它将拾取下一个工作并开始执行它。
关于java - 限制迭代器的线程和/或重用线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8751476/