Hey SO im Guru avere un diavolo di un lavoro con questo codicejava.util.ConcurrentModificationException in Non multithreading programma
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());
}
Quando eseguo il mio programma per la prima volta si tenta di eseguire il codice colpisce questo errore
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)
Avendo stralunate intorno un po 'questo sembra essere un errore che si verifica normalmente con fili per questo che cercano e accedono alla stessa risorsa contemporaneamente, ma questo è ciò che sempre me im non multithreading a tutti in questo sistema.
Qualcuno può spiegare perché questo sta accadendo, o di pensare a un trucco per aggirare l'ostacolo
Molte grazie^_^
grazie a questo ha una grande parte del mio codice funzionante – Gwilym