LinkedList checkForComodification错误java
发布时间:2020-05-25 13:33:44 所属栏目:Java 来源:互联网
导读:好吧,我在这里尝试做的是让一个方法“运行”一个给定量的“时间”的过程,这个所有接缝在一定程度上工作,但它不断给出这些例子. 这是它给出的第一个执行 Exception in thread main java.util.ConcurrentModificationException 然后在exicutio它给出了这个 at j
|
好吧,我在这里尝试做的是让一个方法“运行”一个给定量的“时间”的过程,这个所有接缝在一定程度上工作,但它不断给出这些例子.
Exception in thread "main" java.util.ConcurrentModificationException 然后在exicutio它给出了这个 at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:761) at java.util.LinkedList$ListItr.next(LinkedList.java:696) at parta.PartA.runQueueOne(PartA.java:273) 我不知道我在做错了什么我觉得这个并发或什么?如果是这样的话?我认为链表本质上是同步的?也许那就是我搞砸了. 那么这里的任何方式是我使用的方法: public static void runQueueOne(LinkedList<MyProcess> q1,LinkedList<MyProcess> q2,LinkedList<MyProcess> q3,LinkedList<MyProcess> q4,int ct)
{
System.out.println("Running Level One Queue");
for(MyProcess p : q1)
{
if(p.name.equalsIgnoreCase(q1.getFirst().name))
{
//add 3 millsedonds to the service time
q1.getFirst().serviceTimeTotal += 3;
System.out.println(q1.getFirst().name + " is running");
}else
{
//add 3 millseconds to wait time fr the un busy one
p.waitTimeTotal+=3;
}
}
for(MyProcess p : q2)
{
p.waitTimeTotal+=3;
}
for(MyProcess p : q3)
{
p.waitTimeTotal+=3;
}
for(MyProcess p : q4)
{
p.waitTimeTotal+=3;
}
//calculate all the priority
for(MyProcess p : q1)
{
p.calculatePriority();
switch(p.priority)
{
case 1: break;
case 2: q1.remove(p); q2.add(p); break;
case 3: q1.remove(p); q3.add(p); break;
case 4: q1.remove(p); q4.add(p); break;
}
}
ct += 3;
}
这是我在main方法中调用它的地方 while(!allProcessDone)
{
//arrival queue
for(MyProcess p :al )
{
addToQueue(qOne,p,currentTime);
//cheack to see if all the processes are done
if(p1.isDone == true &
p2.isDone == true &
p3.isDone == true &
p4.isDone == true &
p5.isDone == true &
p6.isDone == true &
p7.isDone == true &
p8.isDone == true &
p9.isDone == true &
p10.isDone == true )
{
//end the loop
allProcessDone = true;
System.out.println("All proccess have been completed");
break;
}
switch (robin)
{
case 1: runQueueOne(qOne,qTwo,qThree,qFour,currentTime); robin = 2;
break;
case 2: runQueueTwo(qOne,currentTime); robin = 3;
break;
case 3 : runQueueThree(qOne,currentTime); robin = 4;
break;
case 4 : runQueueFour(qOne,currentTime); robin = 1;
break;
}
}
感谢您对此的任何帮助 解决方法– 您正在同时访问和修改Collection,这不能直接从for-Each循环完成.– 使用迭代器解决此问题. LinkedList<MyProcess> q1 = new LinkedList<MyProcess>();
Iterator<MyProcess> iterator = q1.iterator();
while (iterator.hasNext()){
MyProcess mp = iterator.next();
if (mp.name.equals("xyz")){
iterator.remove(); // You can do the modification here.
}
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
