繁体   English   中英

将Iterator传递给Java中的线程

[英]Passing an Iterator to a thread in Java

给出以下从Cassandra数据库中提取记录的代码片段:

QueryResult<OrderedRows<String, String, String>> result = rangeSlicesQuery.execute();
OrderedRows<String, String, String> rows = result.get();
Iterator<Row<String, String, String>> rowsIterator = rows.iterator();

如果我将rowsIterator对象放在Queue上,定义如下:

BlockingQueue<Iterator<Row<String, String, String>>> queue = 
    new PriorityBlockingQueue<Iterator<Row<String, String, String>>>();

现在,如果我有一个从该队列读取的线程,我是否能够从队列中获取迭代器并迭代此线程中的OrderRows?

换句话说,在一个线程中创建的迭代器是否可以传递给第二个线程,以便第二个线程可以迭代在第一个线程中为其创建迭代器的原始集合?

简而言之,是的。 它只是一个引用您的集合的对象。

我也许会对此保持警惕。 在一个线程中使用迭代器可能意味着您可以在另一个线程中修改您的集合,并且除非您小心,否则您将面临并发修改的风险。 也许迭代原始集合的副本?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM