java - 限制迭代器的线程和/或重用线程?

标签 java multithreading iterator

假设我有一个迭代器 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/

相关文章:

Java 对象从另一个实例获取变量?

c# - 线程退出时如何处理 ThreadLocal 值?

java - 创建太多线程有什么缺点吗?

c++ - "yield"C++ 关键字,如何从我的函数返回迭代器?

c++ - 'ostream_iterator<int>' 的初始化没有匹配的构造函数

rust - 如何获得 Rust 中最大值元素的迭代器?

java - 我有一个java二十一点应用程序。如何使其成为服务器客户端?

java - 如何为手动依赖注入(inject)创建mockito测试

java - Android Studio 中默认的 JDK 是 JRE

c - 在 Tesla K80 集群中使用点对点获取 nan 结果