java.util.ConcurrentModificationException的异常 [问题点数:100分,结帖人potahai]

Bbs3
本版专家分:885
结帖率 100%
Bbs8
本版专家分:35901
Bbs8
本版专家分:35901
Bbs3
本版专家分:885
Bbs3
本版专家分:885
Bbs8
本版专家分:35901
Bbs8
本版专家分:35901
Bbs3
本版专家分:885
Bbs3
本版专家分:885
Bbs8
本版专家分:35901
Bbs3
本版专家分:885
Bbs3
本版专家分:885
Bbs3
本版专家分:885
《Effective Java》——学习笔记(异常&并发)
<em>异常</em>第57条:只针对<em>异常</em>的情况才使用<em>异常</em><em>异常</em>应该只用于<em>异常</em>的情况下:它们永远不应该用于正常的控制流设计良好的API不应该强迫它的客户端为了正常的控制流而使用<em>异常</em>第58条:对可恢复的情况使用受检<em>异常</em>,对编程错误使用运行时<em>异常</em>Java程序设计语言提供了三种可抛出结构:受检的<em>异常</em>、运行时<em>异常</em>和错误如果期望调用者能够适当地恢复,对于这种情况就应该使用受检的<em>异常</em>,通过抛出受检的<em>异常</em>,强迫调用者在一个catch
java并发修改异常
并发修改<em>异常</em>nn案例1,ArrayList的并发修改nnnimport java.util.ArrayList;nnpublic class Test01 {n public static void main(String[] args) {n ArrayList&amp;lt;String&amp;gt; list = new ArrayList&amp;lt;&amp;gt;();nn li...
关于java集合的遍历以及ConcurrentModificationException(并发操作异常)
遍历集合的常用方法以及并发操作<em>异常</em>
java.util.concurrentModificationException详解(为什么要这样做,如何实现)以及解决问题过程中的有趣发现
今天遇到一个极为神奇的问题。nn改了名字就报错,不改就正确。nn   定位到错误代码nnnn注意我黑色圈出来的东西。ioc是一个HashMap,ioc.values()返回的是一个Collection,在进行迭代的过程,我对ioc里面的内容进行了修改,看一下括号括起来的东西,我进行了remove和put,这就会引发fail-fast,即快速错误,就是知道后面肯定会报错,提前中断,抛出错误原因。nn...
liferay常遇的异常问题解决
1.service build number……rnrn<em>异常</em>信息如下:rnrn[img]http://dl.iteye.com/upload/attachment/0079/0385/a5615dd2-0abf-3592-82a4-c3a84fdb7d30.jpg[/img]rn其实,该<em>异常</em>主要还是报:service build number小于服务器上已经部署的。rnservice build ...
使用set时发生Java ConcurrentModificationException异常原因和解决方法
欢迎使用Markdown编辑器写博客import java.util.Set;nimport java.util.TreeSet;public class Practice { static final String RIGHT = "R";n static final String DOWN = "D"; private static String generateString(
使用迭代器遍历集合时,当集合中的数据发生变化是会抛出java.util.ConcurrentModificationException异常
使用迭代器遍历集合时,当集合中的数据发生变化是会抛出java.util.ConcurrentModificationException<em>异常</em>
遍历hashMap出现java.util.concurrentmodificationexception异常
如何避免遍历hashMap出现<em>java.util.concurrentmodificationexception</em><em>异常</em>,代码如下rn[code=Java]public static boolean sendFlowersMail()rn HashMap> mailMap = UserRoleManager.getMsgMap();rn rn System.out.println("mailMap:"+mailMap.size());rn StringBuffer sb = new StringBuffer();rn List list1 = new ArrayList();rn List list2 = new ArrayList();rn List list3 = new ArrayList();rn List list4 = new ArrayList();rn for(Iterator itor = mailMap.keySet().iterator();itor.hasNext();)rn int roleId = Integer.valueOf(itor.next().toString());rn System.out.println("roleID:"+roleId);rn List list = (List) mailMap.get(roleId);rn for(String s:list)rn String [] ss = s.split("\\,");rn System.out.println("sss:"+s);rn if(ss[0] !=null && !ss[0].equals(""))rn if(Integer.valueOf(ss[1]) ==1)rn if(Integer.valueOf(ss[3]) ==0)rn list1.add(ss[0]+" "+ss[2]+"朵,");rn elsern list2.add("匿名 "+ss[2]+"朵,");rn rn elsern if(Integer.valueOf(ss[3]) ==0)rn list3.add(ss[0]+" "+ss[2]+"个,");rn elsern list4.add("匿名 "+ss[2]+"个,");rn rn rn rn rn rn rn sb.append("尊敬的天域玩家,你好,天域有你更美丽!你今天");rn if((list1.size() >0 ||list2.size() >0) && (list3.size() > 0|| list4.size() > 0))rn sb.append("收到的鲜花:");rn UserRoleManager.setStringBuffer(sb, list1);rn UserRoleManager.setStringBuffer(sb, list2);rn sb.append(";被扔的鸡蛋:");rn UserRoleManager.setStringBuffer(sb,list3);rn UserRoleManager.setStringBuffer(sb,list4);rn else if(!(list1.size() >0 ||list2.size() >0)&& (list3.size() > 0|| list4.size() > 0))rn sb.append("收到的被扔的鸡蛋:");rn UserRoleManager.setStringBuffer(sb,list3);rn UserRoleManager.setStringBuffer(sb,list4);rn else if((list1.size() >0 ||list2.size() >0) &&!(list3.size() > 0|| list4.size() > 0))rn sb.append("收到的鲜花:");rn UserRoleManager.setStringBuffer(sb, list1);rn UserRoleManager.setStringBuffer(sb, list2);rn rn if(sb.length()>0)rn Mail mail = new Mail();rn String content = null;rn for(int i=0;i);rn OLKManager.sendSysMail(roleId, mail);rn rn rn mailMap.clear();rn itor.remove();rn mailMap.remove(roleId);rn rn return true;rn rn [/code]rn该如何改???大虾们,求救
java.util.ConcurrentModificationException ,遍历集合并同时修改集合,并发造成的异常解决办法
解决办法:移除并发修改的语句rnrnjava.util.ConcurrentModificationExceptionn java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)n java.util.ArrayList$Itr.next(ArrayList.java:851)n cn.banwxf.shoppingmal
java.util.ConcurrentModificationException
[size=24px][color=#FF0000]这是从马士兵哪看得资料,执行时会抛出这个<em>异常</em>。听别人说使用遍历方法(增强的for循环)时不能改变容器内容,可为什么用for循环就可以呢?rn求解[/color][/size]rnrnimport java.awt.*;rnimport java.awt.event.*;rnimport java.util.*;rnimport java.util.List;rnpublic class TankClient extends Frame rn public static final int GAME_WIDTH = 800;rn public static final int GAME_HEIGHT = 600;rn List ms = new ArrayList();rn rn Tank myTank = new Tank(50, 50,this);rn rn Image offScreenImage = null;rn rn public void paint(Graphics g) rn for(Missile item : ms)rn item.draw(g);rn rn [color=#FF0000]//for(int i=0; i TankClient.GAME_WIDTH || y > TankClient.GAME_HEIGHT) rn rn tc.ms.remove(this);rn rn rnrnrnrn
java中出现的ConcurrentModificationException产生原因,解决方式及其它
JAVA开发中有时会出现ConcurrentModificationException,该<em>异常</em>是由于在遍历Collection的时候做了删除或者增加的操作,此时原来统计的size和新的size并不一致,产生了该<em>异常</em>。下面是stackOverflow上的解释:rn[quote]rnrnHere's why: As it is says in the Javadoc:rn The iterato...
java.util.ConcurrentModificationException异常一般是由什么原因引起的
java.util.ConcurrentModificationExceptionrn at java.util.HashMap$HashIterator.nextEntry(HashMap.java:750)rn at java.util.HashMap$KeyIterator.next(HashMap.java:786)rnrn谢谢
remove 元素时抛异常 java.util.ConcurrentModificationException
在treeset 集合里 我放3个元素 然后遍历找到其中一个我要删除的 remove 第一个元素一切正常rn如果要删除的元素 在第2个 或者第3个 就会抛java.util.ConcurrentModificationException 这个<em>异常</em>rn这个是怎么了 应该怎么解决啊?
android开发错误集锦
Error:Execution failed for task ':app:validateSigningBaiduDebug'.n> Keystore file D:\project_space\AgronetByGit3.08\app\Users\xiaoxian\Desktop\Agronet_andriod\AgronetByGit3.08\Agronet_Android.keystor
线程池的管理,源码解析以及RejectedExecution
       对于线程池用的也不少,但是最近还是糟了一坑。还是要深入了解一下线程池的使用,以免以后遭重        对于JavaEE项目来说,服务端项目是一直启动着,有的时候需要异步或者大并发的项目来的时候,就会想到使用多线程或者线程池来维护有关的线程。       最近有一个很简单的需求,就是一个方法,可能是异步或者同步返回一个结果。该方法,全局一个调用就够了,不用很多线程同时工作。就想着用f...
关于java.util.ConcurrentModificationException
以下代码 conn.commit(); 后执行conn.close();抛出ConcurrentModificationException,为什么,rn而且数据库用户老是被锁定,跟抛出这个Exception有关系吗rn rn Connection conn = dbSys.getConnection(); //从poolman取得连接rn conn.setAutoCommit(false);rn Statement stmt = conn.createStatement();rn String strSql="........................"; rn PreparedStatement preStmt = conn.prepareStatement(strSql);rn ...............................rn String strJobStatusSql = "......................";rn stmt.addBatch(strJobStatusSql); rn .............................................. rn stmt.executeBatch();rn preStmt.executeBatch();rn conn.commit();rn if(!conn.isClosed())rn conn.close();rn conn = null;rn
Java中的异常及其用法
本文主要介绍<em>异常</em>的概念和<em>异常</em>的两种处理方式。nn目录nn<em>异常</em>nn<em>异常</em>概念nn<em>异常</em>分类nnThrowable体系:nnThrowable中的常用方法:nn <em>异常</em>(Exception)分类:nn<em>异常</em>处理nn抛出<em>异常</em>thrownn<em>异常</em>处理方式一nn<em>异常</em>处理方式二 nnfinally代码块nn其他<em>异常</em>注意事项nn自定义<em>异常</em> nn概念nn用法nn 总结nn--------------------------...
ConcurrencyHashMap并发修改性能比较
由于ConcurrecyHashMap允许并发修改,无需加锁,因此测试其性能nnnnnpackage concurrencyTest;nnimport java.util.Iterator;nimport java.util.concurrent.ConcurrentHashMap;nnimport org.apache.hama.graph.GraphJobMessage;nnnpub
谁帮我看看这段代码老报异常java.util.ConcurrentModificationException
public ActionForward putInCart(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) rnProductBiz biz = new ProductBizImpl();//得到biz对象 rn//获得参数serialNum rnString serialNum = request.getParameter("serialNum"); rn//调用biz的查找方法 rnProduct product=biz.findBySerialNum(serialNum); rn//获得session rnHttpSession session = request.getSession(); rnCart cart = (Cart)session.getAttribute("cart"); rnrnSet items = null; rnif(cart==null||cart.getItems().size()==0) rncart = new Cart(); rnitems = new HashSet(); rncart.setItems(items); rnItem item = new Item(); rnitem.setProduct(product); rnitem.setCount(1); rnitems.add(item); rnelse rnitems = cart.getItems(); rnItem item = new Item(); rnrn//判断购物车中是否已经有该商品,如果有则数量+1 rnIterator it = items.iterator(); rnwhile(it.hasNext()) rnItem i = (Item)it.next(); //就是这里,遍历集合有时会报<em>异常</em>rnif(i.getProduct().getSerialNum().equals(serialNum)) rnrnProduct p = i.getProduct(); rnint count = i.getCount(); rnit.remove(); rnItem ii = new Item(); rnii.setProduct(p); rnii.setCount(count+1); rnitems.add(ii); rnelse rnitem.setProduct(product); rnitem.setCount(1); rnitems.add(item); rn rn rnrn rnrnsession.setAttribute("cart", cart); rnreturn mapping.findForward("ok"); rnrnrn
4.ConcurrentModifyException的产生原因及如何避免
4.ConcurrentModifyException的产生原因及如何避免目录1 关于ConcurrentModificationException2 单线程触发场景举例  2.1 单线程触发举例  2.2 解决单线程环境的ConcurrentModificationException<em>异常</em>  2.3 ArrayList集合改为CopyOnWriteArrayLis  2.4 通过迭代器遍历删除  ...
ConcurrentModificationException异常出现原因以及解决方法
今天在开发过程中遇到一个<em>异常</em>叫ConcurrentModificationException,这个<em>异常</em>用我的白话翻译是叫同时修改<em>异常</em>。nn这个<em>异常</em>是怎么出现的呢,先看看已下的代码:nnnn@Overriden public void onGetModel(List modelList) {n if (modelList != null) {n this.i
请教关于java.util.ConcurrentModificationException 问题
源程序:rn synchronized void cleanUp()rn AccountImpl obj;rnrn long now = System.currentTimeMillis();rn rn Set keys = unlocked.keySet(); rn Iterator it = keys.iterator(); rn rn while( it.hasNext())rn System.out.println("进入了while!");rn //下面这句便是AccountObjectPool.cleanUp (AccountObjectPool.java:168)所指 rn obj = (AccountImpl)it.next(); rn if( ( now - ( ( Long ) unlocked.get( obj ) ).longValue() ) > expirationTime )rn rn //当要被清除出资源池的时候更新数据库,重新写入数据库rn tryrn database.updateAccount(obj.id,obj.name,obj.balance); rn catch(SQLException exc)rn exc.printStackTrace();rn rnrn //存在时间rn unlocked.remove( obj );rn obj = null;rn rn rn System.out.println("clearUp执行完毕!");rn //启动垃圾收集,清除没有对象引用的对象rn System.gc();rn rn运行后出现:rnrnjava.util.ConcurrentModificationException rnat java.util.HashMap$HashIterator.next(HashMap.java:731) rnat AccountObjectPool.cleanUp(AccountObjectPool.java:168) rnat CleanUpThread.run(CleanUpThread.java:30) rnrn请各位大侠指教!!!
高分请教java.util.ConcurrentModificationException问题
错误如下:rnException in thread "main" java.util.ConcurrentModificationExceptionrn at java.util.LinkedList$ListItr.checkForComodification(Unknown Source)rn at java.util.LinkedList$ListItr.next(Unknown Source)rn at simulate.proccess(simulate.java:197)rn at simulate.adjust(simulate.java:90)rn at simulate.main(simulate.java:69)rn关键代码如下:rn队列的定义:rnpublic static Queue waiWaitList = new LinkedList();rn public static Queue bai1WaitList = new LinkedList();rn public static Queue bai2WaitList = new LinkedList();rnrn[code=Java]rnpublic static void proccess(Queue p ,int currentTime,int leftOfEmptyBeds,int totalTime)rn rn int minSeeTime = minSeeTime(p); //求出数组中最小门诊时间rn //int numOfMinSeeTime = numOfPatient(p, minSeeTime); //算出最小门诊时间的个数rn /*if(numOfMinSeeTime < leftOfEmptyBeds) //外伤人数小于剩余病床数rn */rn197行: for (Patient patient : p) rn /* for(Iterator it = p.iterator();it.hasNext();)*/rn rn /* Patient patient = (Patient)it.next();*/rn if (patient.getSeeTime() == minSeeTime)rn //在数组中找到最小门诊时间的对象rn for (int i = 0; i < bed.length; i++) rn //遍历病床数组,寻找空床,若出现空床,则将病人填入病床数组,并从等待队列中将该病人删除。rn if (bed[i].isEmpty() == true) rn rn patient.setInTime(currentTime);//入院时间rn patient.setWaitTime(currentTime-patient.getSeeTime());rn patient.setOutTime(currentTime+totalTime);//外伤总住院天数为8天rn bed[i].setPatients(patient);rn //it.remove();rn p.poll();rn //p.remove();rn leftOfEmptyBeds--; //剩余病床数减少rn rn rn rn rn //rn rn[/code]rnrn请高手帮忙解答一下,很急啊
java.util.ConcurrentModificationException List问题
程序功能: 主程序 往 List totalList = new ArrayList(); 不断放数据。rn5个线程不断地消耗数据, 对totalList的操作 通过 syschronized同步。但是程序还抛<em>异常</em>, 从日志看,没有发现有2个线程同时进入对 totalList的操作,不知道具体原因是什么啊。rn[quote]rn2013-01-13 11:09:04,042 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,042 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,052 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,052 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,062 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,062 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,069 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,069 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,080 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,080 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,120 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,120 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,129 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,129 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,162 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,162 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,165 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,165 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,226 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,226 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,278 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,278 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,297 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,297 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,308 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,308 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,349 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,349 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,374 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,374 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,454 ERROR [com.MoveDataCurr] - rn2013-01-13 11:09:04,456 ERROR [com.MoveDataCurr] - rnjava.util.ConcurrentModificationExceptionrn at java.util.SubList.checkForComodification(AbstractList.java:752)rn at java.util.SubList.listIterator(AbstractList.java:682)rn at java.util.AbstractList.listIterator(AbstractList.java:284)rn at java.util.SubList.iterator(AbstractList.java:678)rn at java.util.AbstractCollection.contains(AbstractCollection.java:82)rn at java.util.AbstractCollection.removeAll(AbstractCollection.java:336)rn at com.MoveDataCurr.dealinThread(MoveDataCurr.java:96)rn at com.MoveDataCurr.access$0(MoveDataCurr.java:84)rn at com.MoveDataCurr$1.run(MoveDataCurr.java:66)rn at java.lang.Thread.run(Thread.java:662)rn[/quote]rnrn[code=java]rnpackage com;rnrnimport java.util.ArrayList;rnimport java.util.List;rnimport java.util.Random;rnimport java.util.concurrent.atomic.AtomicInteger;rnrnimport org.slf4j.Logger;rnimport org.slf4j.LoggerFactory;rnrnpublic class MoveDataCurr rn List totalList = new ArrayList();rn Logger log = LoggerFactory.getLogger(MoveDataCurr.class);rn rn AtomicInteger atomic = new AtomicInteger(0);rnrnrn public static void main(String[] args) throws Exception rn rn MoveDataCurr md = new MoveDataCurr();rn md.moveData();rn rnrn public void moveData() throws Exception rnrn try rnrn openThread();rn OldDBPlanVersion2 d;rn Random rr = new Random();rnrn while (true) rn List dbList = new ArrayList();rnrn for (int i = 0; i < 20; i++) rn d = new OldDBPlanVersion2();rn dbList.add(d);rn rnrn Thread.sleep(Math.abs(rr.nextInt() % 100));rnrn synchronized (totalList) rn log.error("in " + Thread.currentThread().getName());rn totalList.addAll(dbList);rn log.error("out " + Thread.currentThread().getName());rn rnrn rnrn catch (Exception e) rn log.error("出错", e);rn rn while (atomic.get() > 0) rn Thread.sleep(10000);rn rnrn rnrn private void openThread() rnrn for (int i = 0; i < 5; i++) rn Runnable r = new Runnable() rn @Overridern public void run() rn try rn dealinThread();rn catch (Exception e) rn log.error(rn Thread.currentThread().getName()+ " ......a thread error,size:"+ totalList.size() ,rn e);rn System.exit(-1);rnrn rn atomic.addAndGet(-1);rn rn ;rnrn atomic.addAndGet(1);rn Thread t = new Thread(r);rn t.start();rn rn rnrn private void dealinThread() throws Exception rnrn List my;rn int len;rn Random rr = new Random();rn while (true) rn my = null;rn synchronized (totalList) rn log.error("in " + Thread.currentThread().getName());rn len = totalList.size();rn if (len > 200) rn my = totalList.subList(0, 200);rn totalList.removeAll(my);rn else if (len > 0) rn my = new ArrayList();rn my.addAll(totalList);rn totalList.clear();rn rn log.error("out " + Thread.currentThread().getName());rn rnrn Thread.sleep(Math.abs(rr.nextInt() % 1000));rnrn rnrn rnrnrnrnclass OldDBPlanVersion2 rn private String userName;rn public String getUserName() rn return userName;rn rn public void setUserName(String userName) rn this.userName = userName;rn rnrnrn[/code]
hibernate疯狂的抛出java.util.ConcurrentModificationException
大家有没有碰到这个问题。 rnhibernate疯狂的抛出java.util.ConcurrentModificationException rn造成日志文件把磁盘占满了! rnrnJava代码 rn String keywordStr = ""; rnsession = HibernateSessionFactory.getSession(); rnList keyword = session.createQuery("from DbMainKeyWord b where b.id in(" + idstr + ")").list(); rnsession.close(); rnkeywordStr = getKeywordsToStr(keyword); rnreturn keywordStr; rnrn String keywordStr = "";rn session = HibernateSessionFactory.getSession();rn List keyword = session.createQuery("from DbMainKeyWord b where b.id in(" + idstr + ")").list();rn session.close();rn keywordStr = getKeywordsToStr(keyword); rn return keywordStr;rnrn在以上代码的 session.close()的时候就会抛这个<em>异常</em>! rnrn出现这种问题需要一些触发条件,不是每次都会出现的!现在还不清楚这种触发条件! rnrn以下为出现的错误: rnat java.util.HashMap$Has hIterator.nextEntry(Unknown Source) rnat java.util.HashMap$KeyIterator.next(Unknown Source) rnat org.hibernate.jdbc.AbstractBatcher.closeStatements(AbstractBatcher.java:314) rnat org.hibernate.jdbc.ConnectionManager.cleanup(ConnectionManager.java:382) rnat org.hibernate.jdbc.ConnectionManager.close(ConnectionManager.java:324) rn
从集合List中删除对象,正确写法(异常java.util.ConcurrentModificationException
public class Main {nn public static void main(String[] args) {n List list = new ArrayList();n list.add(null);n list.add(2);n list.add(null);n n // 错误写法n for (Integer i : list) {n if (i == nul
任何避免遍历ArrayList的时候抛出java.util.ConcurrentModificationException异常
[code=Java] rn for(User u : new ArrayList ())rn ......rn UserDao.update(u)rn rn rn[/code]rn我要执行类似上面的操作,如何避免java.util.ConcurrentModificationException<em>异常</em>,请高手指点。该如何是好??rn
关于Map表循环过程删除操作出现的java.util.ConcurrentModificationException 异常
使用Iteratern[code=&quot;java&quot;]rn List list = new ArrayList();rn list.add(&quot;a&quot;);list.add(&quot;b&quot;);list.add(&quot;c&quot;);rn rn //for结构 自动生成rn for (Iterator iterator = list.iterator(); iterator.hasNext();) {rn String s = ...
多线程 java.util.ConcurrentModificationException 问题
rn 目标:定义一个Producer类创建Student并添加到studnts集合中,再定义一个Consumer类从studnts集合中取出数据并打印控制台。Producer,Consumer类都实现了Runnable接口。rn 在MainTest类的main方法中创建线程并启动,如下所示:rn         Producer p = new Producer();         Thread tp1 = new Thread(p);         tp1.start();                 Consumer c = new Consumer();         Thread tc1 = new Thread(c);         tc1.start();rn 这个时候,当tc1线程要执行的时候就报java.util.ConcurrentModificationException错误,我本是对线程调用这一块儿不是太明白。请大侠们帮我解决一下儿,请告诉我问啥会出这样的问题。rn  rn 具体类如下所示:rn  rn  rn Student类:一个普通类,其中定义了一个name属性和一个age属性。rn public class Student     private String name;     private String age;         public String getName()         return name;         public void setName(String name)         this.name = name;         public String getAge()         return age;         public void setAge(String age)         this.age = age;             @Override     public int hashCode()         final int prime = 31;         int result = 1;         result = prime * result + ((age == null) ? 0 : age.hashCode());         result = prime * result + ((name == null) ? 0 : name.hashCode());         return result;         @Override     public boolean equals(Object obj)         if (this == obj)             return true;         if (obj == null)             return false;         if (getClass() != obj.getClass())             return false;         Student other = (Student) obj;         if (age == null)             if (other.age != null)                 return false;         else if (!age.equals(other.age))             return false;         if (name == null)             if (other.name != null)                 return false;         else if (!name.equals(other.name))             return false;         return true;             rn  rn Classroom接口:其中定义了一个名称为studnts的List用于存放Student对象。rn public interface Classroom     List studnts = new ArrayList(); rn  rn State抽象类:其中定义了一个状态,想用这个对studnts集合的操作进行控制。rn public abstract class State     boolean state=true; rn  rn Producer类:添加Student到studnts中。rn public class Producer extends State implements Runnable, Classroom     private int i=0;     @Override     public void run()         while(true)                         if(i+s.getAge());                         state = false;                 notify();         rn  rn  rn
如何解决java.util.ConcurrentModificationException
我网上查到的资料是因为迭代器正在遍历的时候进行了插入操作,从而抛出了java.util.ConcurrentModificationExceptionrn那么如何避免这种情况发生呢?rnrn假如我有两个线程,一个线程正在遍历这个数组,另一个线程正在将元素插入这个数组,这时悲剧就会发生,但是这种情况又无法避免,请问应该怎么做才能解决这个问题?rnrn大家可以参考下面的程序,我估计下面的程序当小球个数变多时,判断是否相碰的这个遍历就会花很长的时间,期间如果插入了一个新球必然导致<em>异常</em>被抛出,请教是否有解决办法?rn[code=Java]rnrnimport java.awt.*;rnimport java.awt.geom.*;rnimport java.awt.event.*;rnimport javax.swing.*;rnimport javax.swing.plaf.ComponentUI;rnimport java.util.*;rnrn/**rn * BallPanel,一个可复用的小球碰撞面板rn * @author zjfrn * @version 1.0 2011-1-11rn */rn@SuppressWarnings("serial")rnpublic class BallPanel extends JPanel rnrn private Vector balls = new Vector(); //小球列表rn private BallComponent component = new BallComponent(); //小球画板rn private JButton btnAdd = new JButton("Add"); //Add按钮rn private JButton btnStopAndContinue = new JButton("Stop"); //Stop按钮rn private JButton btnClear = new JButton("Clear"); //Clear按钮rn private JComboBox colorCombo = new JComboBox(); //颜色选择框rn private JComboBox speedCombo = new JComboBox(); //速度选择框rn private JComboBox placeCombo = new JComboBox(); //小球出现方位rn private BallThread thread = new BallThread(); //小球运动线程rn private int delay = 5; //小球运动的延缓时间rn rn /**rn * 初始化小球面板rn */rn public BallPanel()rn rn setLayout(new BorderLayout()); //设置为BorderLayout的布局rn add(component, BorderLayout.CENTER); //将小球画板加到面板中央rn component.setOpaque(true); //设置画板不透明,以便能添加背景色rn component.setBackground(Color.BLACK); //设置背景色rn rn JPanel panel = new JPanel(); //创建用来放各种按钮的面板rn panel.add(btnAdd); //将Add按钮放入该面板rn panel.add(btnStopAndContinue); //将Stop/Continue按钮放入该面板rn panel.add(btnClear); //将Clear按钮放入该面板rn panel.setBackground(Color.LIGHT_GRAY);rn add(panel, BorderLayout.SOUTH); //将按钮面板加到主面板南部rn rn panel = new JPanel(new GridLayout(0, 1)); //创建用来放各种选择框的面板rn panel.add(new JLabel(" Color: ")); //添加标签Color:rn panel.add(colorCombo); //添加颜色选择框rn panel.add(new JLabel(" Speed: ")); //添加标签Speed:rn panel.add(speedCombo); //添加速度选择框rn panel.add(new JLabel(" From: ")); //添加标签From:rn panel.add(placeCombo); //添加方位选择框rn panel.setBackground(Color.LIGHT_GRAY);rn add(panel, BorderLayout.EAST); //将选择框面板加到主面板东部rn rn //以下几句话用来向颜色选择框加入各种颜色选项rn colorCombo.addItem("red");rn colorCombo.addItem("orange");rn colorCombo.addItem("yellow");rn colorCombo.addItem("green");rn colorCombo.addItem("cyan");rn colorCombo.addItem("blue");rn colorCombo.addItem("magenta");rn rn //以下几句话用来向速度选择框加入各种速度选项rn speedCombo.addItem("slow");rn speedCombo.addItem("fast");rn //速度选择框加入监听器,及时改变小球的速度rn speedCombo.addActionListener(new ActionListener()rn rn public void actionPerformed(ActionEvent event)rn rn String speed = (String)speedCombo.getSelectedItem();rn if (speed.equals("slow"))rn rn delay = 5;rn rn elsern rn delay = 1;rn rn rn );rn rn //以下几句话用来向方位选择框加入各种方位选项rn placeCombo.addItem("Left-Top");rn placeCombo.addItem("Left-Bottom");rn placeCombo.addItem("Right-Top");rn placeCombo.addItem("Right-Bottom");rn rn //Add按钮加入监听器,当按下按钮时添加小球rn btnAdd.addActionListener(new ActionListener()rn rn public void actionPerformed(ActionEvent event)rn rn component.addBall();rn rn );rn //Stop/Continue按钮加入监听器,当按下按钮时暂停/继续动画rn btnStopAndContinue.addActionListener(new ActionListener()rn rn public void actionPerformed(ActionEvent event)rn rn if (btnStopAndContinue.getText().equals("Stop")) //如果当前按钮的值为Stoprn rn thread.setStop(true); //将stop标志置为truern btnStopAndContinue.setText("Continue"); //将按钮的标签变为Continuern btnAdd.setEnabled(false); //Add按钮不可用rn rn elsern rn thread.setStop(false); //将stop标志置为falsern btnStopAndContinue.setText("Stop"); //将按钮的标签变为Stoprn btnAdd.setEnabled(true); //Add按钮可用rn rn rn );rn //Clear按钮加入监听器,当按下按钮时清空画板rn btnClear.addActionListener(new ActionListener()rn rn public void actionPerformed(ActionEvent event)rn rn balls = new Vector(); //将球的列表清空rn component.repaint(); //重画画板rn rn );rn rn thread.start(); //画画板的线程开始rn rn rn /**rn * 主函数,主要用于测试rn * @param argsrn */rn public static void main(String[] args)rn rn EventQueue.invokeLater(new Runnable()rn rn public void run()rn rn JFrame frame = new JFrame("碰撞的小球");rn frame.add(new BallPanel());rn frame.setSize(400, 300);rn frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);rn frame.setLocationByPlatform(true);rn frame.setVisible(true);rn rn );rn rn rn /**rn * 小球运动线程rn * @author zjfrn */rn private class BallThread extends Threadrn rn private boolean isStop = false; //停止标记rn rn /**rn * 线程体rn */rn public void run()rn rn while (true) //让它一直执行rn rn if (!isStop) //当没有停止的时候rn rn for (Ball ball : balls)rn rn ball.move(component.getBounds()); //每个小球都移动一遍rn rn component.repaint(); //重画画板rn rn try rn Thread.sleep(delay); //线程延缓delay毫秒rn catch (InterruptedException e) //捕获<em>异常</em>rn e.printStackTrace(); //处理<em>异常</em>rn rn rn rn rn /**rn * 设置stop标志rn * @param isStop 是否停止rn */rn public void setStop(boolean isStop)rn rn this.isStop = isStop;rn rn rn rn /**rn * 小球的画板rn * @author zjfrn */rn private class BallComponent extends JComponentrn rn public BallComponent()rn rn //说实话,我不是很明白这段代码是干什么的,但是要用到背景色必须用到这段代码rn setUI(new ComponentUI() rn rn public void installUI(JComponent c)rn rn super.installUI(c);rn LookAndFeel.installColors(c, "Panel.background",rn "Panel.foreground");rn rn );rn rn /**rn * 添加小球rn */rn public void addBall()rn rn double x = 0; //小球开始的x坐标rn double y = 0; //小球开始的y坐标rn String tmp = (String)placeCombo.getSelectedItem(); //得到方位的选择项rn if (tmp.equals("Left-Top")) //如果为左上rn rn x = component.getBounds().getMinX(); //x设为画板的最左边的值rn y = component.getBounds().getMinY(); //y设为画板的最上边的值rn rn if (tmp.equals("Left-Bottom")) //下同rn rn x = component.getBounds().getMinX();rn y = component.getBounds().getMaxY();rn rn if (tmp.equals("Right-Top"))rn rn x = component.getBounds().getMaxX();rn y = component.getBounds().getMinY();rn rn if (tmp.equals("Right-Bottom"))rn rn x = component.getBounds().getMaxX();rn y = component.getBounds().getMaxY();rn rn rn Color color = Color.BLACK; //小球开始的颜色rn tmp = (String)colorCombo.getSelectedItem(); //得到颜色的选择项rn if (tmp.equals("red")) //如果为redrn rn color = Color.RED; //颜色设为redrn rn if (tmp.equals("orange")) //下同rn rn color = Color.ORANGE;rn rn if (tmp.equals("yellow"))rn rn color = Color.YELLOW;rn rn if (tmp.equals("green"))rn rn color = Color.GREEN;rn rn if (tmp.equals("cyan"))rn rn color = Color.CYAN;rn rn if (tmp.equals("blue"))rn rn color = Color.BLUE;rn rn if (tmp.equals("magenta"))rn rn color = Color.MAGENTA;rn rn balls.add(new Ball(x, y, color)); //在小球的列表中加入新球,球的初始方位和颜色为前面的值rn rn rn /**rn * 绘制画板rn */rn public void paintComponent(Graphics g)rn rn super.paintComponent(g);rn Graphics2D g2 = (Graphics2D)g;rn for (Ball ball : balls) //将小球列表中的小球都画到画板上rn rn g2.setColor(ball.getColor()); //设置画布中小球的颜色rn g2.fill(ball.getShape()); //画出小球的形状rn rn rn rn rn /**rn * 小球类rn * @author zjfrn */rn private class Ballrn rn private static final double SIZE = 20; //小球的直径rn private double x = 0; //小球所在的x坐标rn private double y = 0; //小球所在的y坐标rn private double vx = Math.sqrt(2) / 2; //小球在x轴的速度rn private double vy = Math.sqrt(2) / 2; //小球在y轴的速度rn private Color color = Color.BLACK; //小球的颜色rn rn /**rn * 小球的构造函数rn * @param x 小球所在的x坐标rn * @param y 小球所在的y坐标rn * @param color 小球的颜色rn */rn public Ball(double x, double y, Color color)rn rn this.x = x;rn this.y = y;rn this.color = color;rn rn rn /**rn * 小球在一个矩形边框中移动rn * @param bounds 矩形边框rn */rn public void move(Rectangle2D bounds)rn rn x += vx; //小球在x轴上的位移rn y += vy; //小球在y轴上的位移rn double minX = bounds.getMinX(); //矩形边界的最小x坐标rn double minY = bounds.getMinY(); //矩形边界的最小y坐标rn double maxX = bounds.getMaxX(); //矩形边界的最大x坐标rn double maxY = bounds.getMaxY(); //矩形边界的最大y坐标rn if (x = maxX) //如果小球越过右边界rn rn x = maxX - SIZE; //小球的x坐标变为矩形边界的最大x坐标减去小球的直径rn vx = -vx; //小球在x轴方向的速度反向rn rn if (y + SIZE >= maxY) //如果小球越过下边界rn rn y = maxY - SIZE; //小球的y坐标变为矩形边界的最大y坐标减去小球的直径rn vy = -vy; //小球在y轴方向的速度反向rn rn for (Ball ball : balls) //判断小球间是否发生碰撞rn rn if (this.equals(ball)) //自己和自己不碰撞rn continue;rn if ((ball.x - x) * (ball.x - x) + (ball.y - y) * (ball.y - y) ball.x) //如果自己的x坐标大于发生碰撞的小球的x坐标,由数学知识可知自己应该往正向运动rn rn vx = Math.cos(degree); rn vy = Math.sin(degree);rn rn else //如果自己的x坐标小于发生碰撞的小球的x坐标,由数学知识可知应该朝负向运动rn rn vx = -Math.cos(degree);rn vy = -Math.sin(degree);rn rn rn rn rn rn /**rn * 获取小球的形状rn * @return 形状rn */rn public Ellipse2D getShape()rn rn return new Ellipse2D.Double(x, y, SIZE, SIZE);rn rn rn /**rn * 获取小球的颜色rn * @return 颜色rn */rn public Color getColor()rn rn return color;rn rn rn /**rn * 判断两个小球是否相同rn */rn public boolean equals(Object object)rn rn if (this == object) return true; //如果所指的对象相同,即两小球的确相同rn if (object == null) return false; //如果要比较的小球不存在,则两小球不同rn if (getClass() != object.getClass()) return false; //如果自己的类名与另一个对象的类名不同,则两小球不同rn Ball ball = (Ball)object; //将另一个对象强制转化为小球rn return x == ball.x && y == ball.y && color.equals(ball.color); //通过方位,颜色判断是否相同rn rn rnrn[/code]
急!!!!java.util.ConcurrentModificationException异常问题
我在一个timer的run中调用了一个方法,获取一个collection,但同时还有其他的地方调用了相同的方法,获取collection,程序启动时,当collection中的值大于等于2时,遍历collection时,遍历到第二个值时,就会报java.util.ConcurrentModificationException<em>异常</em>,请问有什么办法可以解决吗?rn 将collection强制转换为list不行,强制转换后都不会进入判断循环遍历了,给被调用的方法getAllStoroageSystem()加了同步也不行,还是会报这个<em>异常</em>rn 各位高手们,请指教下啊rn Collection storageSystemList = StorageSystemManager.getAllStoroageSystem();rnrn System.out.println("ccc" + storageSystemList.size());rn rn if(storageSystemList != null && storageSystemList.size() > 0)rnrn for(Iterator iter = storageSystemList.iterator(); iter.hasNext();)rnrn StorageSystem storageSystem = (StorageSystem) iter.next();rn rn String sysName = storageSystem.getName();rn
java8 ArrayDeque接口实现源码解析
一、类继承关系nnnnDeque接口说明和使用参考上一篇java8 LinkedList接口实现源码解析 nn二、接口实现nn      ArrayDeque是基于数组的Deque接口实现类,内存存储结构简单,当需要FIFO队列,LIFO队列或者Stack时,官方推荐优先使用ArrayDeque。线程不安全,会自动扩容,遍历时修改会快速失败。nn1、全局变量和公共方法nnn/**n * 保...
java线程池中任务异常处理
首先我们看个例子,当使用线程池执行任务时如果某个任务出现<em>异常</em>会是什么效果import java.util.concurrent.SynchronousQueue;nimport java.util.concurrent.ThreadPoolExecutor;nimport java.util.concurrent.TimeUnit;public class DivTask implements Ru
Hibernate查询list()时报java.util.ConcurrentModificationException
下面是我的代码:rn[code=Java] @SuppressWarnings("unchecked")rn public List get(String hql, Object[] args) rn Session s = sf.getCurrentSession();rn List rslt = null;rn Transaction ts = s.beginTransaction();rn try rn Query q = s.createQuery(hql);rn for (int i = 0; i < (args == null ? 0 : args.length); ++i) rn q.setParameter(i, args[i]);rn rn s.flush();rn rslt = (List)(q.list());rn// ts.commit();rn catch (HibernateException e) rn ts.rollback();rn log.error("从数据库中获取所有数据时出错!", e);rn e.printStackTrace();rn rn // if(rslt == null)rn // throw new RecordNotFoundException();rn return rslt;rn rn[/code]rnrn以下是详细出错信息:rn[code=Java]rnjava.util.ConcurrentModificationExceptionrn at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)rn at java.util.HashMap$ValueIterator.next(HashMap.java:822)rn at org.hibernate.pretty.Printer.toString(Printer.java:113)rn at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:120)rn at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)rn at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206)rn at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:375)rn at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)rn at cn.ijser.DAO.Impl.BaseDAO.get(BaseDAO.java:136)rn at cn.ijser.Services.UserGroupService.getByName(UserGroupService.java:91)rn at cn.ijser.InitDataTest.insertUser(InitDataTest.java:123)rn at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)rn at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)rn at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)rn at java.lang.reflect.Method.invoke(Method.java:597)rn at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)rn at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)rn at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)rn at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)rn at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)rn at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)rn at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)rn at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)rn at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)rn at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)rn at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)rn at org.junit.runners.ParentRunner.run(ParentRunner.java:236)rn at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)rn at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)rn at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)rn at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)rn at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)rn at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)rnrn[/code]rnrn诡异的是:有时候我DEBUG一步一步,就不会出错,而直接运行基本总会出这个错。。在网上也查了半天,无果。rnrn怎么办呢?
java异常处理
<em>异常</em><em>异常</em><em>异常</em><em>异常</em><em>异常</em><em>异常</em><em>异常</em><em>异常</em><em>异常</em><em>异常</em><em>异常</em><em>异常</em><em>异常</em><em>异常</em><em>异常</em><em>异常</em><em>异常</em><em>异常</em>
清理数据异常
清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>清理数据<em>异常</em>
java异常的处理讲解
java<em>异常</em>的处理java<em>异常</em>的处理java<em>异常</em>的处理java<em>异常</em>的处理java<em>异常</em>的处理java<em>异常</em>的处理java<em>异常</em>的处理java<em>异常</em>的处理java<em>异常</em>的处理java<em>异常</em>的处理java<em>异常</em>的处理java<em>异常</em>的处理java<em>异常</em>的处理java<em>异常</em>的处理java<em>异常</em>的处理java<em>异常</em>的处理java<em>异常</em>的处理java<em>异常</em>的处理java<em>异常</em>的处理
软件异常测试软件异常测试软件异常测试软件异常测试
软件<em>异常</em>测试软件<em>异常</em>测试软件<em>异常</em>测试软件<em>异常</em>测试软件<em>异常</em>测试软件<em>异常</em>测试软件<em>异常</em>测试软件<em>异常</em>测试软件<em>异常</em>测试软件<em>异常</em>测试
有关Iterator的问题,代码会报java.util.ConcurrentModificationException错
while(rs.next())rn rn rn Iterator iter = all.iterator();rn while (iter.hasNext()) rn Plan p = (Plan) iter.next();rn String id = p.getOtherFlag();rn if(rs.getString("otherflag").equals(id))rn rn System.out.println("存在相同");rn rn elsern rn //根据查找到符合条件的otherflag找到主表项rn String sql_res = "select * from administrator.tdphtmp where otherflag='"+ rs.getString("otherflag") +"'";rn System.out.println(sql_res);rn PreparedStatement pstmt_res = null ;rn tryrn rn pstmt_res = dbc.getConnection().prepareStatement(sql_res) ;rn ResultSet rs_res = pstmt_res.executeQuery() ;rn while(rs_res.next())rn rn Plan plan = new Plan() ;rn //plan.setId(rs.getInt("id"));rn plan.setDwbm_name(rs_res.getString("dwbm_name"));rn plan.setTxr(rs_res.getString("txr")) ;rn plan.setTxrq(rs_res.getDate("txrq")) ;rn plan.setDdselect(rs_res.getString("ddselect")) ;rn plan.setDd(rs_res.getString("dd"));rn plan.setTdsbfw(rs_res.getString("tdsbfw"));rn plan.setLb(rs_res.getString("lb"));rn plan.setGznr(rs_res.getString("gznr"));rn plan.setJhksrq(rs_res.getDate("jhksrq"));rn plan.setJhjsrq(rs_res.getDate("jhjsrq"));rn plan.setTs(rs_res.getString("ts"));rn plan.setWorktimesure(rs_res.getString("worktimesure"));rn plan.setBz(rs_res.getString("bz"));rn plan.setSjzt(rs_res.getString("sjzt"));rn plan.setScbj(rs_res.getString("scbj"));rn plan.setOtherFlag(rs_res.getString("otherflag"));rn plan.setOtherFlag2(rs_res.getString("otherflag2"));rn all.add(plan) ;rn rn rs_res.close() ;rn pstmt_res.close() ;rn rn catch (Exception e)rn rn System.out.println("query出现错误"+e) ;rn rn rn rn rn rn rs.close() ;rn pstmt.close() ;rn
关于循环集合的删除异常java.util.ConcurrentModificationException 解决办法
今天在项目的中有一个需求,需要在一个Set类型的集合中删除满足条件的对象,这时想当然地想到直接调用Set的remove(Object o)方法将指定的对象删除即可,测试代码:   public class Test {    public static void main(String[] args) {        User user1 = new User();        user1.s...
集合遍历时删除元素异常(ConcurrentModificationException)分析
传统方式下的Collection在迭代集合时,不允许对集合进行修改。根据AbstractList的checkForComodification方法的源码,分析产生ConcurrentModificationException<em>异常</em>的原因rnrnrnrnrnrn传统方式下的Collection在迭代集合时,不允许对集合进行修改。rn根据AbstractList的checkForComodificati
C++异常结构.docC++异常结构.doc
C++<em>异常</em>结构.docC++<em>异常</em>结构.docC++<em>异常</em>结构.docC++<em>异常</em>结构.docC++<em>异常</em>结构.doc
ajax异常,页面跳转异常处理
ajax<em>异常</em>,页面跳转<em>异常</em>处理ajax<em>异常</em>,页面跳转<em>异常</em>处理ajax<em>异常</em>,页面跳转<em>异常</em>处理ajax<em>异常</em>,页面跳转<em>异常</em>处理ajax<em>异常</em>,页面跳转<em>异常</em>处理ajax<em>异常</em>,页面跳转<em>异常</em>处理ajax<em>异常</em>,页面跳转<em>异常</em>处理ajax<em>异常</em>,页面跳转<em>异常</em>处理ajax<em>异常</em>,页面跳转<em>异常</em>处理ajax<em>异常</em>,页面跳转<em>异常</em>处理
C++异常详解
C++<em>异常</em>详解C++<em>异常</em>详解C++<em>异常</em>详解C++<em>异常</em>详解C++<em>异常</em>详解
JAVA异常详解.doc
JAVA<em>异常</em>详解.docJAVA<em>异常</em>详解.docJAVA<em>异常</em>详解.docJAVA<em>异常</em>详解.docJAVA<em>异常</em>详解.docJAVA<em>异常</em>详解.docJAVA<em>异常</em>详解.docJAVA<em>异常</em>详解.docJAVA<em>异常</em>详解.docJAVA<em>异常</em>详解.doc
corejava异常和内部类.pdf
corejava<em>异常</em>和内部类.pdfcorejava<em>异常</em>和内部类.pdfcorejava<em>异常</em>和内部类.pdfcorejava<em>异常</em>和内部类.pdfcorejava<em>异常</em>和内部类.pdfcorejava<em>异常</em>和内部类.pdf
java异常总结
java<em>异常</em>总结java<em>异常</em>总结java<em>异常</em>总结java<em>异常</em>总结java<em>异常</em>总结java<em>异常</em>总结
异常处理 ppt java
<em>异常</em>和<em>异常</em>处理的两种方法 Java的<em>异常</em>类 Java的<em>异常</em>处理方法 <em>异常</em>的抛出和处理 自定义的<em>异常</em>类
第七章 异常.ppt
第七章 <em>异常</em>.ppt第七章 <em>异常</em>.ppt第七章 第七章 <em>异常</em>.ppt<em>异常</em>.ppt第七章 <em>异常</em>.ppt第七章 <em>异常</em>.ppt
为什么在foreach循环中进行元素remove/add操作,会抛ConcurrentModificationException 异常
场景nn有如下代码运行:nnnn @Testn public void testRemove() {n List&amp;lt;String&amp;gt; list = new ArrayList&amp;lt;String&amp;gt;();n list.add(&quot;1&quot;);n list.add(&quot;2&quot;);n for (String item : list)...
如何创建和使用自定义异常
java java<em>异常</em>java java<em>异常</em>java java<em>异常</em>java java<em>异常</em>java java<em>异常</em>java java<em>异常</em>java java<em>异常</em>
Android 常见问题解答
1、问题描述: rn在存在多屏数据的时候,频繁滑动ListView会出现部分item黑屏的现象?rnrn问题原因: rnListView的显示Adapter中的Item布局过于复杂,频繁滑动ListView时Android底层渲染不及时导致。rnrn问题解决: rn在AndroidMainnifest.xml中设置硬件加速,加速对界面渲染即可。(android:hardwareAccelerated=”true...
异常机制的总结与处理
 <em>异常</em>的概念  Java中的<em>异常</em>  <em>异常</em>的分类  <em>异常</em>处理机制语法  常见<em>异常</em>及<em>异常</em>类API介绍  自定义<em>异常</em>  <em>异常</em>总结
spring+jpa+全局异常+单元测试
spring+jpa+全局<em>异常</em>+单元测试spring+jpa+全局<em>异常</em>+单元测试spring+jpa+全局<em>异常</em>+单元测试spring+jpa+全局<em>异常</em>+单元测试spring+jpa+全局<em>异常</em>+单元测试
java中的异常处理
在java中会有一些<em>异常</em>。这些<em>异常</em>分为运行<em>异常</em>和编译<em>异常</em>,java中将这些<em>异常</em>作为对象进行处理。
jave异常学习知识点总结
java<em>异常</em>知识点总结 包含<em>异常</em>的分类 <em>异常</em>的处理 <em>异常</em>的捕捉方法
用友T3、T6清除异常互斥记录
清除<em>异常</em>互斥记录 清除<em>异常</em>互斥记录 清除<em>异常</em>互斥记录 清除<em>异常</em>互斥记录
java常见异常
算术<em>异常</em>类:ArithmeticExecption 空指针<em>异常</em>类:NullPointerException 类型强制转换<em>异常</em>:ClassCastException 数组负下标<em>异常</em>:NegativeArrayException 数组下标越界<em>异常</em>:ArrayIndexOutOfBoundsException 违背安全原则<em>异常</em>:SecturityException 文件已结束<em>异常</em>:EOFException 文件未找到<em>异常</em>:FileNotFoundException 字符串转换为数字<em>异常</em>:NumberFormatException
UF异常任务清除工具
UF<em>异常</em>任务清除 ,协助清楚<em>异常</em>任务。 UF<em>异常</em>任务清除 ,协助清楚<em>异常</em>任务。 UF<em>异常</em>任务清除 ,协助清楚<em>异常</em>任务。
U8网络版异常清楚.rar
U8网络版<em>异常</em>清楚.rarU8网络版<em>异常</em>清楚.rarU8网络版<em>异常</em>清楚.rarU8网络版<em>异常</em>清楚.rarU8网络版<em>异常</em>清楚.rarU8网络版<em>异常</em>清楚.rar
Java异常基础知识总结文档
Java<em>异常</em>基础知识:包括<em>异常</em>分类、<em>异常</em>区别、<em>异常</em>处理、<em>异常</em>抛出、自定义<em>异常</em>等相关知识。
ORACLE 异常错误处理
详细介绍 ORACLE <em>异常</em>错误处理<em>异常</em>错误处理<em>异常</em>错误处理
C++学习_异常.ppt
C++学习_<em>异常</em>.pptC++学习_<em>异常</em>.pptC++学习_<em>异常</em>.ppt
java 异常详解,java异常分类,创建自己的异常
java <em>异常</em>详解,java<em>异常</em>分类,创建自己的<em>异常</em>
Java(异常处理).ppt
Java <em>异常</em>基本概念 系统定义<em>异常</em> 自定义<em>异常</em> <em>异常</em>处理 <em>异常</em>转移
7.异常-introdute.doc
7.<em>异常</em>.doc 7.<em>异常</em>.doc 7.<em>异常</em>.doc
项目中遇到的一些问题或异常以及处理方法
1、LinearLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParamsnn遇到该<em>异常</em>是在listview中适配器中的getView方法里,导入布局后,设置布局中的控件layoutParams时报此<em>异常</em>,因item的父控件是listview,所以使用LayoutParams需要找其对应的类型,需要将L...
SWI异常01SWI异常01
SWI<em>异常</em>01SWI<em>异常</em>01
iOS 异常捕捉及处理发送。ExceptionHandler.
iOS<em>异常</em>捕捉提示,发送邮件及写入<em>异常</em>日志。 提供 断言, 错误的具体位置(类名及行数)、所有<em>异常</em>报告内容、及<em>异常</em>报告文件路径接口。 并统一展示 <em>异常</em>日志 。
用友通U8等异常任务清除
用友通<em>异常</em>任务清除用友通<em>异常</em>任务清除用友通<em>异常</em>任务清除用友通<em>异常</em>任务清除
Java百道面试题,仅供参考
49、列出一些你常见的运行时<em>异常</em>? 答: ArithmeticException(算术<em>异常</em>) ClassCastException (类转换<em>异常</em>) IllegalArgumentException (非法参数<em>异常</em>) IndexOutOfBoundsException (下表越界<em>异常</em>) NullPointerException (空指针<em>异常</em>) SecurityException (安全<em>异常</em>)
java异常课件
本节内容包括 Java <em>异常</em>概念 Java <em>异常</em>的分类 <em>异常</em>的捕获和处理 使用自定义的<em>异常</em> 使用<em>异常</em>机制的建议
4 JAVA异常.PPT
4 JAVA<em>异常</em>.PPT4 JAVA<em>异常</em>.PPT
java异常处理机制
<em>异常</em>的概念 <em>异常</em>的捕获与处理 自定义<em>异常</em>等
进程异常VEHHook源码
进程<em>异常</em>VEHHook源码进程<em>异常</em>
JavaSE之异常实战视频课程
理解<em>异常</em>的概念,运用try块、catch块和finally块处理<em>异常</em>,Java中<em>异常</em>类的继承体系结构,运用多重catch块处理<em>异常</em>,运用嵌套try/catch块处理<em>异常</em>,运用关键字throw和throws处理<em>异常</em>n用户自定义<em>异常</em>
finally块及异常体系结构
理解<em>异常</em>的概念,运用try块、catch块和finally块处理<em>异常</em>,Java中<em>异常</em>类的继承体系结构,运用多重catch块处理<em>异常</em>,运用嵌套try/catch块处理<em>异常</em>,运用关键字throw和throws处理<em>异常</em>n用户自定义<em>异常</em>
总结
理解<em>异常</em>的概念,运用try块、catch块和finally块处理<em>异常</em>,Java中<em>异常</em>类的继承体系结构,运用多重catch块处理<em>异常</em>,运用嵌套try/catch块处理<em>异常</em>,运用关键字throw和throws处理<em>异常</em>n用户自定义<em>异常</em>
清除异常任务.exe
清除<em>异常</em>任务.exe 清除<em>异常</em>任务.exe 清除<em>异常</em>任务.exe
异常任务清除
8种<em>异常</em>任务清除工具 8种<em>异常</em>任务清除工具 8种<em>异常</em>任务清除工具
异常地址堆栈回溯
<em>异常</em>堆栈回溯 找出<em>异常</em>地址
java中的异常
java中的<em>异常</em>java中的<em>异常</em>
异常的概述
理解<em>异常</em>的概念,运用try块、catch块和finally块处理<em>异常</em>,Java中<em>异常</em>类的继承体系结构,运用多重catch块处理<em>异常</em>,运用嵌套try/catch块处理<em>异常</em>,运用关键字throw和throws处理<em>异常</em>n用户自定义<em>异常</em>
强连通分量及缩点tarjan算法解析
强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Time, DFN[N], Low[N]; DFN[i]表示 遍历到 i 点时是第几次dfs Low[u] 表示 以u点为父节点的 子树 能连接到 [栈中] 最上端的点   int
hummingbird exceed v13 x64.part1下载
Windows 下的 X-server. 64位版. v13. 2008. 网上可以下到32位版的。但没有单独的64位版的. 包含3%的恢复.共三个文件. 相关下载链接:[url=//download.csdn.net/download/qwert022/4242999?utm_source=bbsseo]//download.csdn.net/download/qwert022/4242999?utm_source=bbsseo[/url]
数字高程模型.ppt下载
数字高程模型.ppt 数字高程模型.ppt 相关下载链接:[url=//download.csdn.net/download/xumianqi/1966509?utm_source=bbsseo]//download.csdn.net/download/xumianqi/1966509?utm_source=bbsseo[/url]
汇编语言复习ppt 及复习指导下载
............................................. 相关下载链接:[url=//download.csdn.net/download/yesicandoitwell/3348962?utm_source=bbsseo]//download.csdn.net/download/yesicandoitwell/3348962?utm_source=bbsseo[/url]
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java异常学习 java学习异常
我们是很有底线的