use*_*534 3 java multithreading java-8 java-stream
假设我有一个List只被一个线程修改的对象(线程可以添加或删除对象),而另一个线程偶尔使用上面集合中的流api对它进行一些流操作,最后(急切操作)返回一个新的集合.这是一个线程安全的场景吗?毕竟只有一个线程更新了集合.
这完全取决于您的源List实现.随着ArrayList你可能会得到ConcurrentModificationException(或可能会得到损坏的数据或其他一些例外:见评论).有了CopyOnWriteArrayList你可以放心地使用流操作:他们将看到创建的流时,这是实际的列表的状态.在任何情况下,您都应该检查文档中spliterator()相应集合的方法,以确定在并发环境中使用它是否安全.
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |