当前位置: 首页 > news >正文

好网站建设公司选择哪家好360下载

好网站建设公司选择哪家好,360下载,网站制作加教程视频教程,wordpress视频自动播放一、异常产生 当我们使用foreach迭代一个ArrayList或者HashMap时#xff0c;如果尝试对集合做一些修改操作#xff08;例如删除元素或新增#xff09;#xff0c;可能会抛出java.util.ConcurrentModificationException的异常。 javapublic static void main(String[] args)…一、异常产生 当我们使用foreach迭代一个ArrayList或者HashMap时如果尝试对集合做一些修改操作例如删除元素或新增可能会抛出java.util.ConcurrentModificationException的异常。 javapublic static void main(String[] args) {ListUser listnew ArrayList();for(int i0;i10;i){User user new User();user.setMsg(123i);user.setName(王总i);list.add(user);}list.forEach(item-{if(Objects.equals(item.getMsg(),1234)){User user new User();item.setName(456789);CglibUtil.copy(item,user);list.add(user);}});System.out.println(list);}执行之后会报 map的例子javajcItemMap.forEach((x,items)-{ListFinFreightItemR finFreightItemRList items.stream().filter(item - Objects.equals(item.getAmountFlag(), FinConstant.YesOrNo.YES)).collect(Collectors.toList());if(CollectionUtil.isEmpty(finFreightItemRList)){jcItemMap.remove(x);allItemMap.remove(x);}});二、java.util.ConcurrentModificationException异常产生的原因 ArrayList的父类AbstarctList中有一个域modCount,每次对集合进行修改增添元素删除元素。。。时都会modCount.而foreach的背后实现原理其实就是Iterator等同于注释部分代码。在这里迭代ArrayList的Iterator中有一个变量expectedModCount,该变量会初始化和modCount相等但如果接下来对集合进行修改modCount改变就会造成expectedModCount !modCount,此时就会掏出异常java.util.ConcurrentModificationException异常。 过程如下图 三、异常的解决 1.单线程环境 上面我们已经了解了异常的发送原因接下我们说一下解决方案。 1.1我们可以使用iterator迭代器进行遍历 IteratorUser iterator list.iterator();while(iterator.hasNext()){User user iterator.next();if(Objects.equals(user.getMsg(),1234)){iterator.remove();}}System.out.println(list);细心的朋友会发现Itr中的也有一个remove方法实质也是调用了ArrayList中的remove但增加了expectedModCount modCount;保证了不会抛出java.util.ConcurrentModificationException异常。 但是这个办法的有两个弊端 1.只能进行remove操作add、clear等Itr中没有。 2.而且只适用单线程环境。 2、多线程环境 方法一迭代前加锁解决了多线程问题但还是不能进行迭代add、clear等操作。 public class Test12 {static ListString list new ArrayListString();public static void main(String[] args) {list.add(a);list.add(b);list.add(c);list.add(d);new Thread() {public void run() {IteratorString iterator list.iterator();synchronized (list) {while (iterator.hasNext()) {System.out.println(Thread.currentThread().getName() : iterator.next());try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}};}.start();new Thread() {public synchronized void run() {IteratorString iterator list.iterator();synchronized (list) {while (iterator.hasNext()) {String element iterator.next();if (Objects.equals(element,c)) {System.out.println(Thread.currentThread().getName() : element);iterator.remove();}}}};}.start();} }方法二采用CopyOnWriteArrayList解决了多线程问题同时可以add、clear等操作 public class Test12 {static ListString list new CopyOnWriteArrayList();public static void main(String[] args) throws InterruptedException {list.add(a);list.add(b);list.add(c);list.add(d);new Thread() {public void run() {IteratorString iterator list.iterator();synchronized (list) {while (iterator.hasNext()) {System.out.println(Thread.currentThread().getName() : iterator.next());try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}};}.start();new Thread() {public synchronized void run() {IteratorString iterator list.iterator();synchronized (list) {while (iterator.hasNext()) {String element iterator.next();if (Objects.equals(element,c)) {System.out.println(Thread.currentThread().getName() : element);list.remove(element);list.add(123456);}}}};}.start();Thread.sleep(5000);System.out.println(list);} }CopyOnWriteArrayList也是一个线程安全的ArrayList其实现原理在于每次add或remove等所有的操作都是重新创建一个新的数组再把引用指向新的数组。 对于HashMap的迭代删除是一样的
http://www.dnsts.com.cn/news/83562.html

相关文章:

  • 清远市网站建设宝山做手机网站建设
  • 宽屏大气企业网站源码河南网站建设运营域名注册公司
  • 视频网站怎么建设鄂州网站开发
  • 中国行业网站联盟秦皇岛网站制作代理商
  • asp.net mvc5网站开发绵阳网站搜索排名
  • wordpress网站换字体颜色国际形势最新消息
  • 郑州做网站哪家专业建站的步骤有哪些
  • 网站制作新手教程建婚恋网站需要多少钱
  • 常用网站开发技术网站提交链接入口
  • 深圳高端网站定制设计wordpress 守望轩
  • 长沙网站建设+个人广东免费网络推广软件
  • 自己怎么做家政网站竞价单页网站制作
  • 网站建设高端定制鹤壁做网站价格
  • 网站开发与实践题库微信公众号如何创建
  • icp网站负责人做PPT不错的网站有哪些
  • 建设网站外包装饰网站开发背景
  • 网站建设模板哪里有网站中文章内图片做超链接
  • 做网站搜爬闪隆昌移动网站建设
  • 合肥网站网站建设wordpress小程序主题
  • 花园设计网站推荐十大互联网平台
  • 冀州市网站建设深圳福田有什么好玩的地方
  • 广州seo网站服务公司加盟网站建设服务
  • 汽修专业主要学什么西安百度seo推广
  • 佛山专业网站建设静态网站flash
  • 网站建设的基本元素长春鸿祥建设有限公司网站
  • 书店商城网站html模板下载深圳 做公司网站
  • 昆明网络公司网站2021网页qq登陆
  • 易烊千玺个人网站网站开发报价单 doc
  • 怎么做自己的发卡网站dz网站模板
  • 建设好学校网站免费一键生成名片