我有一个并行流,其中我使用 Map 来改变元素。
Map<Long, List<MyItem>> hashmap = foo.getMap();
itemStream.parallel()
.filter(Objects::nonNull)
.forEach(item -> setProperties(hashmap, item));
方法“setProperties()”获取地图和项目,并使用项目执行获取,然后设置项目的一些属性。
我想要的是以原子方式完成获取/属性设置。这样两个线程就不能对同一个键执行 get 并且属性更新是交错的。
private void setProperties(Map<Long, List<Item>> map, Item item) {
long id = item.getID();
List<Object1> items = map.get(id);
for (Object1 ob : items) {
ob.setId(item.getFloorId());
ob.setPath(item.getPath());
ob.setTypeName(item.getTypeName());
}
}
也有点担心延迟命中以及这种并行化是否真的比现有的单线程方法有好处。
皈依舞
相关分类