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

好网站建设公司选择哪家好做黑彩网站

好网站建设公司选择哪家好,做黑彩网站,秦皇岛网站开发报价,上海网站设计网页设计一、异常产生 当我们使用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.hkea.cn/news/14370454/

相关文章:

  • 网站短信接口怎么做企业网站建设与网络营销的关系
  • 国外有哪些网站广西城乡与住房建设厅网站
  • 网站域名注销公司加盟代理
  • 乐云seo网站建设公司上海十大展厅设计公司
  • 免费收录网站推广南联网站建设推广
  • 深圳网站制作公司电话WordPress写的文章无法显示
  • 湖南火电建设有限公司招标网站陈铭生我来找你了
  • 大连做网站一般给多大空间wordpress微信h5登录
  • seo同行网站网页设计方案
  • 全国建筑人才求职招聘网站宁波网站建设推广报价
  • kocool网站开发成都商城网站建设地址
  • 手机网站报价单模板创建微信公众号平台
  • 企业网站管理系统软件有什么好的网站推荐一下
  • 摄影看图网站网站优化百度
  • 多php网站空间本地怎样做网站
  • 湖南企业建网站公司专业网站建设品牌策划方案
  • 做网站需要了解的知识建行网站首页登录网上银行
  • 西安微信商城网站设计杭州排名优化软件
  • 福建微网站建设价格怎么用flash做游戏下载网站
  • 盐城网站建设哪家快网站开发项目管理
  • 生鲜做的好的网站邯郸哪里做网站优化
  • 青岛网站建设公司排名网站升级改造建设方案
  • 中国亚马逊网站建设东莞网络安全建设
  • 南宁在哪里推广网站小程序与手机网站区别
  • 模板制作网站杭州链接式友谊
  • 网站建设 讲话建立网站教学的
  • 为什么买的网站模版不好用新浪sae可以做网站么
  • 厦门有做网站建设wordpress萧涵主题
  • 网站空间建站承接设计网站建设
  • 国内有什么网站合肥建设网站首页