Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Element sauber aus Liste entfernen

  1. #1
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    377

    Element sauber aus Liste entfernen

    So, meld mich wieder mal mit nem Fall der mir schwierigkeiten macht.
    Ich habe ne Application die Nachrichten verarbeitet und eine Menge von Objekten die diese Nachricht verarbeiten. Nun bekomme ich aber eine ConcurrentException wenn ich versuche eines dieser verarbeitenden Objekte zu entfernen.
    Der Code sieht so aus:
    Code:
    	public synchronized void register( MessageLogger logger ) {
    		synchronized ( this.loggers ) {
    			if ( !this.loggers.contains( logger ) )
    				this.loggers.add( logger );
    		}
    	}
    
    	public synchronized void unregister( MessageLogger logger ) {
    		synchronized ( this.loggers ) {
    			this.loggers.remove( logger );
    		}
    	}
    	
    	public synchronized void report( Message message ) {
    		synchronized ( this.loggers ) {
    			for ( MessageLogger logger : this.loggers ) {
    				try {
    					logger.redirectMessage( message );
    				} catch ( ConfigurationException e ) {
    					System.err.println( logger.getClass() + ": Invalid logger value(s)." );
    					e.printStackTrace();
    				}
    			}
    		}
    	}
    Die Fehlermeldung:
    Code:
    Exception in thread "Thread-0" java.util.ConcurrentModificationException
    	at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:617)
    	at java.util.LinkedList$ListItr.next(LinkedList.java:552)
    	at moe.patrol.core.Reporter.report(Reporter.java:96)
    	at moe.patrol.core.connection.core.AbstractReader.doMessageTasks(AbstractReader.java:56)
    	at moe.patrol.core.connection.smard.SmardReader.run(SmardReader.java:76)
    	at java.lang.Thread.run(Thread.java:595)
    Das Problem tritt also beim for auf. Nun ist mir das schon klar was da nicht zusammenpasst, aber mir faellt leider nicht ein wie man das nun loesen kann

    Hat jemand vielleicht nen Vorschlag?

    mfg
    nul
    Amilo D - 2,8 Ghz - ATI Radeon 9000
    Debian GNU/Linux 3.1 (Sarge)

  2. #2
    Registrierter Benutzer
    Registriert seit
    10.10.2005
    Beiträge
    39
    tja, was macht denn die redirect-funktion? veraenderst du da irgendwas?

    sieht so aus, als wuerdest du irgendwas modifizieren, was du nicht modifizieren solltest...

    solange du nicht sagst, was du da machst, ist es schwer, 'ne alternative anzubieten

  3. #3
    Registrierter Benutzer Avatar von Waxolunist
    Registriert seit
    19.06.2006
    Ort
    Wien
    Beiträge
    485
    Ich kann dir nur sagen, dass z.B. der Fehler auch auftritt, wenn du eine Liste mit Iterator durcharbeitest, und anstatt iterator.remove einen call zu list.remove machst.

    Vielleicht hilft dir das, denn an deinem Code-Stück kann ich nicht erkennen, wo genau der Fehler auftritt, da ich nicht weiß, was im redirect geschieht.
    Spezialitäten heute: PLSQL, TSQL, Java (alles mit Webanwendungen), Groovy, Grails, ASP.NET, Javascript, Python, Django
    Straight through, ohne Umwege ans Ziel

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •