GVKun编程网logo

java.util.ConcurrentModificationException

3

对于java.util.ConcurrentModificationException感兴趣的读者,本文将提供您所需要的所有信息,并且为您提供关于com.intellij.util.Reflectio

对于java.util.ConcurrentModificationException感兴趣的读者,本文将提供您所需要的所有信息,并且为您提供关于com.intellij.util.ReflectionUtil 对方法 java.util.ResourceBundle.setParent(java.util.ResourceBundle) 的非法反射访问、ConcurrentModificationException at java.util.TreeMap$PrivateEntryIterator、ConcurrentModificationException at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1207)、FAQ(80):java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification的宝贵知识。

本文目录一览:

java.util.ConcurrentModificationException

java.util.ConcurrentModificationException

// 更新暂停的位置

Set<String> pset = onPauseList.keySet();

List<String> pauseList = new ArrayList<String>();

for (Iterator iterator = pset.iterator(); iterator.hasNext();) {

String string = (String) iterator.next();

// 不要在此书直接 onPauseList.remove(string);

pauseList.add(string);

onPauseList.put(string, tempb);

}

onPauseList.remove(pauseList);

你不能在对一个List进行的时候将其中的元素删除掉
解决办法是,你可以先将要删除的元素用另一个list装起来,等结束再remove掉


com.intellij.util.ReflectionUtil 对方法 java.util.ResourceBundle.setParent(java.util.ResourceBundle) 的非法反射访问

com.intellij.util.ReflectionUtil 对方法 java.util.ResourceBundle.setParent(java.util.ResourceBundle) 的非法反射访问

如何解决com.intellij.util.ReflectionUtil 对方法 java.util.ResourceBundle.setParent(java.util.ResourceBundle) 的非法反射访问

我在 VSCode 中编写了一些 kotlin 代码

其中之一是:

public void readCSV(String fileName) {
    fileLocation = fileName;
    File csvFile = new File(fileName);
    Scanner sfile;
//    noOfColumns = 0;
//    noOfRows = 0;
    data = new ArrayList<ArrayList>();
    int colCounter = 0;
    int rowCounter = 0;
    
    try {
        sfile = new Scanner(csvFile);
        
        while (sfile.hasNextLine()) {
            String aLine = sfile.nextLine();
            Scanner sline = new Scanner(aLine);
            sline.useDelimiter(",");
            colCounter = 0;
            while (sline.hasNext()) {
                if (rowCounter == 0) 
                    data.add(new ArrayList<String>());
                
                
                data.get(colCounter).add(sline.next());
                colCounter++;
            }
            rowCounter++;
            sline.close();
        }
//        noOfColumns = colCounter;
//        noOfRows = rowCounter;
        sfile.close();
    } catch (FileNotFoundException e) {
        System.out.println("File to read " + csvFile + " not found!");
    }
} 

当我运行它时,我得到:

fun main() {
println("Hello world")
}

它有效,但我无法隐藏或修复警告,我使用 JDK 15

我在 IntelliJ 上没有收到这些警告

ConcurrentModificationException at java.util.TreeMap$PrivateEntryIterator

ConcurrentModificationException at java.util.TreeMap$PrivateEntryIterator



java.util.ConcurrentModificationException
at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1207)
at java.util.TreeMap$KeyIterator.next(TreeMap.java:1261)
at cn.qjj.business.EmailBus.email(EmailBus.java:58)
at cn.qjj.business.EmailBus$1.run(EmailBus.java:130)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

ConcurrentModificationException at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1207)

ConcurrentModificationException at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1207)

java.util. ConcurrentModificationException
at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1207)
at java.util.TreeMap$KeyIterator.next(TreeMap.java:1261)
at cn.qjj.business.EmailBus.email(EmailBus.java:58)
at cn.qjj.business.EmailBus$1.run(EmailBus.java:130)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

FAQ(80):java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification

FAQ(80):java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification

2018 年 8 月 31 日

1、日志:

2018-04-13 20:00:55.757:WARN:oejs.ServletHandler:/g01-web/admin/activityManager/sendActivity.jsp
java.util.ConcurrentModificationException
	at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859)
	at java.util.ArrayList$Itr.next(ArrayList.java:831)
	at org.apache.jsp.admin.activityManager.sendActivity_jsp._jspService(sendActivity_jsp.java:146)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
	at org.eclipse.jetty.server.Server.handle(Server.java:370)
	at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
	at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982)
	at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043)
	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
	at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
	at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
	at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)
	at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
	at java.lang.Thread.run(Thread.java:745)

 

2、解决方法:


1)线程的 bug;
源码:
(在遍历对象时,同时修改对象的数据)

        for(ActivityInfo info : list){
            if(info.getActivityId() == Integer.parseInt(activityId)){
                System.out.println("del-info:"+info);
                list.removeinfo);
                accountService.notifyLogonPlayerActivity(ActivityNotifyType.FORCE_ACTIVITY.getCode(),info.getActivityId());
                break;
            } 
        }

 

2)修改:

        for(ActivityInfo info : list){
            if(info.getActivityId() == Integer.parseInt(activityId)){
                System.out.println("del-info:"+info);
                delActivity = info;
                accountService.notifyLogonPlayerActivity(ActivityNotifyType.FORCE_ACTIVITY.getCode(),info.getActivityId());
                break;
            } 
        }
        list.remove(delActivity); 

改为:跳出循环体后再修改对象。

 

3)foreach 的快速失败,

阿里巴巴 java 开发手册建议:


7. 【强制】不要在 foreach 循环里进行元素的 remove /add 操作。 remove 元素请使用 Iterator
方式,如果并发操作,需要对 Iterator 对象加锁。


 

我们今天的关于java.util.ConcurrentModificationException的分享就到这里,谢谢您的阅读,如果想了解更多关于com.intellij.util.ReflectionUtil 对方法 java.util.ResourceBundle.setParent(java.util.ResourceBundle) 的非法反射访问、ConcurrentModificationException at java.util.TreeMap$PrivateEntryIterator、ConcurrentModificationException at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1207)、FAQ(80):java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification的相关信息,可以在本站进行搜索。

本文标签: