HashSet

HashSet特点: 元素不可重复,无序,线程不安全,底层是HashMap实现,HashMap的key是唯一不可重复的,value则是用的一个Object对象"占位",主要是key用来存取数据.

案例代码

public class HashSetConcurrentDemo {public static void main(String[] args) {Set<String> list = new HashSet();for (int i = 0; i < 30; i++) {new Thread(()->{list.add(UUID.randomUUID().toString().substring(0,8));System.out.println(list);},"t"+i).start();}}
}

导致原因

高并发情况下,多个线程调用add方法产生的错误.

解决方案

  1. Collections.synchronizedSet(new HashSet<>())集合工具类
    底层是同步代码块synchronized来保证线程安全,其实就是把HashSet方法加了同步代码块,底层操作还是细节没变,就是包装了一层,加上了synchronized修饰保证线程安全

    关键代码
  2. CopyOnWriteArraySet
    CopyOnWriteArraySet其实底层是CopyOnWriteArrayList,也是采用ReentrantLock锁来保证线程安全.
    每次添加元素都会遍历集合中元素是否存在,存在返回元素所在下标,如果下标大于-1则跳出方法返回false,否则执行添加元素的操作

Java并发HashSet报错ConcurrentModificationException解决方案相关推荐

  1. Java并发HashMap报错ConcurrentModificationException解决方案

    HashMap HashMap是散列表存储,采用key-value键值对存储数据,其中k用hash散列函数找到存储位置,为的就是减少查找比较次数,特点: 无序,key不可重复,key可以为null,v ...

  2. Intellij IDEA 导入或运行流式处理框架storm以及java.lang.NoClassDefFoundError报错的解决方案

    网上有很多使用eclipse编辑storm的,但是我觉得eclipse界面不太友好,于是毅然使用intellij IDEA来编辑 但是直接无脑导入会有各种各样奇葩的报错,于是我在解决了问题之后与大家分 ...

  3. java todataurl_canvas.toDataURL()报错的解决方案全都在这了

    报错详尽信息 Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases ...

  4. 关于java导出Excel报错65535的解决方案

    关于java导出Excel报错65535的解决方案 java.lang.IllegalArgumentException: Invalid row number (65536) outside all ...

  5. 微信表情符号 mysql_Emoji表情符号入MySQL数据库报错的解决方案

    Emoji表情符号入MySQL数据库报错的解决方案 发布时间:2020-08-15 08:21:52 来源:ITPUB博客 阅读:136 作者:bestpaydata auther:Jane.Hoo ...

  6. java连接OPC 报错汇总

    java连接OPC 报错汇总 最近在弄utgard连接opc服务器 状态码 原因 解决方案 80070005: Unknown error (80070005) 账号没有权限 服务器在win10下 没 ...

  7. Java IDEA pom 报错java.lang.OutOfMemoryError: GC overhead limit exceeded 基本所有依赖都报错(除了JDK自带String等)解决详

    @Java IDEA pom 报错java.lang.OutOfMemoryError: GC overhead limit exceeded 基本所有依赖都报错(除了JDK自带String等)解决详 ...

  8. Navicat链接数据库报错1130解决方案

    Navicat链接数据库报错1130解决方案 参考文章: (1)Navicat链接数据库报错1130解决方案 (2)https://www.cnblogs.com/newAndHui/p/113451 ...

  9. vue 打包后访问接口报错404 解决方案 (前提是在vue里使用了代理)

    vue 打包后访问接口报错404 解决方案 (前提是在vue里使用了代理) 参考文章: (1)vue 打包后访问接口报错404 解决方案 (前提是在vue里使用了代理) (2)https://www. ...

最新文章

  1. 格式工厂mac版_格式工厂无广告版,支持PDF文件的转换
  2. 大北农集团被指控授意窃取商业秘密
  3. Rabbit的Windows安装
  4. PhotoshopCS6-视觉特效插画技法-15-磨砂金属效果分析
  5. rds数据加密_如何保障云上数据安全?一文详解云原生全链路加密
  6. 苹果电脑 Mac OS X 系统诞生的故事和发展历史
  7. android 线程太多,应用程序可能在其主线程上做了太多的工作。
  8. 清华又揽一位AI大牛!前微软全球副总裁开招博士生!
  9. SSH Iptables访问控制
  10. JAVA中获取工程路径的方法
  11. 自定义Flash背景的相关设置方法以及其与目录下的文件的对应关系
  12. 《DOOM启示录》读后感
  13. 关于海康相机ip地址无法更改问题
  14. 网站在线协作工具 onlyoffice在线协作
  15. 【2021年】百度搜索词获取,获取百度搜索的关键词
  16. ajax如何传递josn数据,jq之ajax以及json数据传递
  17. 用户登录.html_河南省中小学教师继续教育管理系统登录入口http://47.92.44.63:89/
  18. 暴力破解之验证码绕过
  19. “墨子号”量子科学实验卫星成果获克利夫兰奖
  20. linux centos 命令行 安装 teamviewers ___yyw合并版

热门文章

  1. Win10多用户同时远程桌面的另类解决方案---支持1809和1909和2004版本V2.0
  2. windows debug tools
  3. addEventListener 的第三个参数capture、once、passive
  4. python的easygui属性错误_python - PythonAnywhere:尝试使用easygui模块时出现Tkinter.py错误 - 堆栈内存溢出...
  5. 关于中国新能源发展最近趋势的深度分析!政府和科技巨头抓住了历史拐点
  6. 深度学习图像标注软件LabelMe使用方法
  7. 计算机教育杂志有核心期刊吗,计算机教育杂志是核心期刊吗?
  8. python1到100奇数相加_Python:从inpu将奇数相加
  9. 什么是触发器,MySQL都有哪些触发器?
  10. Hadoop(三)通过C#/python实现Hadoop MapReduce