J'ai une erreur ConcurrentModificationException; c'est la citation:Erreur ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859)
at java.util.ArrayList$Itr.next(ArrayList.java:831)
at org.eclipse.om2m.IOTproject.ipu.Monitor.start(Monitor.java:31)
at org.eclipse.om2m.IOTproject.ipu.Activator$1$1.run(Activator.java:39)
Ici il y a le début de fil en classe Moniteur:
public void start() throws Exception {
ServerUDP server = new ServerUDP();
Thread t = new Thread(server);
t.start();
while (true) {
Iterator<Pacchetto> it = server.A.iterator();
while (it.hasNext()) {
Pacchetto o = (Pacchetto) it.next();
Utils.insertResource(o);
Cette classe appelle un fil en classe ServerUDP
public void run() {
Controllore c = new Controllore(A);
c.start();
DatagramSocket serverSocket = null;
try {
serverSocket = new DatagramSocket(4445);
//TODO chiudi pacchetto
} catch (SocketException e1) {
e1.printStackTrace();
}
byte[] receiveData = new byte[1024];
while(true){
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
try {
serverSocket.receive(receivePacket);
} catch (IOException e) {
e.printStackTrace();
}
String msg = new String(receivePacket.getData());
Date date = new Date();
Pacchetto o = new Pacchetto();
o.setIP(msg);
o.setTimestamp(date);
Iterator<Pacchetto> iterator1 = A.iterator();
boolean flag = true;
while (iterator1.hasNext()) {
Pacchetto obj = (Pacchetto) iterator1.next();
if (obj.getIP().equals(o.getIP())) {
obj.setTimestamp(o.getTimestamp());
flag = false;
break;
}
}
if (flag) {
System.out.println("Added " + o.getIP());
A.add(o);
}
System.out.println("Check -------------");
for (int i=0; i< A.size() ; i++)
{
System.out.println(A.get(i).getIP());
}
}
}
}
Pacchetto est un objet, défini par moi. Comment puis-je résoudre ce problème? Merci
Lire ce billet depuis la [Javadoc] (http://download.oracle.com/javase/1.4.2/docs/api/java/util/ConcurrentModificationException.html) – aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Vérifiez ce fil http : //stackoverflow.com/questions/8104692/how-to-avoid-java-util-concurrentmodificationexception-wheniterating-through-an –
J'ai besoin de cloner l'arraylist dans la classe ServerUDP? –