如果我有一个线程敏感的列表,我通常会在迭代时采取以下方式:
List list = Collections.synchronizedList(new ArrayList());
...
synchronized(list) {
Iterator i = list.iterator(); // Must be in synchronized block
while (i.hasNext())
foo(i.next());
}
我想知道如果我使用list.stream()并对流执行一些操作,比如筛选等,是否还需要将列表放入同步块中,还是流会复制列表?
谢谢