隐藏页面特效

并行流的线程安全问题(parallelStream)

1|0问题代码


Map<String, Object> madData = new HashMap(); List<String> list = paramVo.getList(); list.parallelStream().forEach(e -> { madData.put(e,e); }); return mapData;

2|0问题现象


map中数据随机缺失,不全。

3|0问题原因


往普通的collection中add数据时会出现抢占资源的线程问题。导致数据随机缺失。

4|0解决方案


  • 给collection上锁
Map<String, Object> madData = Collections.synchronizedMap(Maps.<String, Object> newHashMap()); List<String> list = paramVo.getList(); list.parallelStream().forEach(e -> { madData.put(e,e); }); return mapData;
  • 使用java8中的收集器
List<String> list = paramVo.getList(); Map<String, String> mapData = list.parallelStream().collect(Collectors.toMap(e -> e, e -> e)); return mapData;

__EOF__

本文作者阿布呦
本文链接https://www.cnblogs.com/weilx/p/16329743.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   阿步呦  阅读(789)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示