簡體   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