Jag har följande kod i min connectionpool
long curTime=System.currentTimeMillis();
Connection conn=null;
ConnectionInfo ci=null;
Iterator iter=usedConnections.keySet().iterator();
while(iter.hasNext())
{
conn=(Connection)iter.next();
ci=(ConnectionInfo)usedConnections.get(conn);
if((ci.getTime()+cleanInterval)<curTime)
{
try
{
usedConnections.remove(conn);
if(ci.getExtra()==false)
freeConnections.add(newConnection());
conn.close();
}
catch(SQLException sql)
{
}
}
}
problemet med den är att när jag har kört en "usedConnections.remove(conn);" samtidigt som jag kör loopen som går igenom alla objekt i "usedConnections" så får jag detta fel medelande
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:762)
at java.util.HashMap$KeyIterator.next(HashMap.java:798)
at com.vgsoftware.util.database.DBConnectionPool.clean(DBConnectionPool.
java:272)
at com.vgsoftware.util.database.Cleaner.run(DBConnectionPool.java:330)
Är det någon som kan hjälpa till och föröska hitta ett bättre sätt att bygga loppen på? Jag har tänkt och testat lite men kan inte komma på något sätt :(
/Viktor