A rundown on some good Java synchronization links I’ve run across recently:

Vector vs. Collections.synchronizedList Discusses using a Vector versus wrapping a List (usually ArrayList, but other Lists as well) with Collections.synchronizedList. The rule of thumb that’s bandied about is to use Vector when you need a synchronized list and a plain List (ArrayList) otherwise. But this bothers me because then what’s Collections.synchronizedList for? Well, this article argues that Vector should be deprecated and you should always use Collections.synchronizedList which I wholly agree with.

Synchronization discussion on JavaPosse Explains ConcurrentModificationException in context of HashMap and HashTable (look for Reiner’s comments). This exception is widely misunderstood and many people misunderstand it as in this discussion. Again, it is stated to use Collections.synchronizedMap over HashTable and that HashTable (as Vector) should be deprecated.

Do Java6 Threading Optimizations Actually Work, and Part 2 Excellent overview of Java6 threading optimizations and if they actually work with measurements. Any article that discusses performance without hard numbers should be tossed straight away.