【发布时间】:2015-05-18 10:27:28
【问题描述】:
假设我有一个 List 的对象,这些对象仅由一个线程修改(线程可以添加或删除对象),而另一个线程偶尔使用上述集合中的流 api 对其进行一些流操作,并在end(急切操作)返回一个新集合。
这是一个线程安全的场景吗?毕竟只有一个线程更新集合。
【问题讨论】:
-
我不这么认为...如果一个线程删除一个项目而另一个线程试图读取它会发生什么?不过我可能是错的,因为我不确定流在底层是如何工作的。
-
这不是一个线程安全的场景,因为你有一个线程写入和一个或多个线程读取。为了使其线程安全,您需要确保写入不会干扰读取。
标签: java multithreading java-8 java-stream