喂有這麼一個工作赫克這個代碼java.util.ConcurrentModificationException在非多線程程序
public void kill(double GrowthRate, int Death)
{
int before = population.size();
for (PopulationMember p : population)
{
int[] probs = ProbablityArrayDeath(GrowthRate,Death,(int)p.fitness());
if (probs[RandomNumberGen.nextRandomInt(0, 99)]==0)
{
population.remove(p);
}
}
System.out.println("Intial Population: "+before+", Deaths:"+(before- population.size())+", New Population: "+population.size());
}
當我運行我的程序嘗試運行該代碼的第一次大師的IM它擊中這個錯誤
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
at java.util.HashMap$KeyIterator.next(HashMap.java:828)
at Genetics.Population.kill(Population.java:181)
at Genetics.Population.run(Population.java:47)
at Control.Main.main(Main.java:35)
已經瞪大眼睛張望了一下,這似乎是通常與線程爲什麼他們試圖同時訪問相同的資源發生了錯誤,但是這是他們讓我在即時通訊這個系統不是多線程的。
有人可以解釋爲什麼發生這種情況,還是覺得一個黑客繞過它
非常感謝^ _^
感謝這已經得到了我的代碼大部分工作 – Gwilym 2009-11-29 18:04:42