One meme that gets stressed with Java development is always use ArrayList over Vector. Vector is deprecated. That may be true, but Vector and Hashtable have the advantage that they are synchronized.
I am working with a heavily concurrent oriented application, wouldn’t it benefit to use objects that are synchronized like Vector? It seems that they have their place?
The problem with Vector and Hashtable is that they’re only locally synchronized. They won’t break (as in corrupt data) in a concurrent application, however, due to the local synchronization (e.g. get is synchronized, but only until get returns), you’ll be wanting to perform your own synchronization anyway for situations such as iteration over the content. Now, even your put-method needs some extra synchronization to cooperate with the iteration synchronization and you end up with a situation where your Hashtable/Vector is doubly synchronized.