I'm using the CollectionsFactory methods that return EDO.oswego collection implementations.
The thing is, those are highly concurrent implementations, but to make use of them you need to relax locking (e.g. you don't need to lock when you read/iterate).
But if you do that then you can't change to a different collection implementations...
Not big deal, anyway.
If we were to change to a different implementation (e.g. the java5 implementations)
they need to have the same semantics.
They could also be implemented with Collections.synchronizedXXX()
except the behaviour of iterator.remove() is different to oswego concurrent in some
places like the CopyOnWrite implementations.