Hey im SO de Guru ayant un diable d'un emploi avec ce codejava.util.ConcurrentModificationException dans Non multithread Programme
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());
}
Quand je lance mon programme la première fois qu'il tente d'exécuter le code, il frappe cette erreur
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)
Après avoir Goggled autour d'un peu cela semble être une erreur qui se produit normalement avec des fils pourquoi ils essaient et l'accès en même temps la même ressource, mais c'est ce que je ne suis pas me faire multithreading du tout dans ce système.
Quelqu'un peut-il expliquer pourquoi cela se produit, ou penser à un hack pour contourner
Un grand merci^_^
merci cela a une grande partie de mon code de travail – Gwilym