在阅读Java 8 Spliterator的文档时,我遇到了“串行线程限制”的概念。严格地说,文档说明:
Q1:在上面的第一句话中,我假设编写Spliterator
的实现时,我应该返回Spliterator的新实例,该实例将对遍历数据的隔 ionic 集进行操作(以便该数据子集无法被其他线程访问)。是对的吗?
问题2:第二句话是什么意思。什么是“串行线程限制”,为什么它是“典型并行算法的自然结果”?
最佳答案
Q1:是的,一次只能有一个线程拥有Splititerator。当在Splititerator上使用实例时,trySplit方法将返回(如果可以拆分集合)一个新的Splititerator,您应该只给一个线程(另一个线程应该处理原始的Splititerator,该Splititerator现在仅包含未被该元素删除的元素)。 trySplit调用)
Q2:串行线程限制意味着您可以安全地将splititerator从一个线程发布到另一个线程,只要将splititerator限制在单个线程中即可