Lew wrote:
Also, all the methods in Vector and Hashtable are synchronized, an
overhead not needed in thread-local contexts. Furthermore, the
Collections class can make synchronized versions of any collection.
Unfortunately, that's not quite true. /Some/ of the methods in Vector and
Hashtable are synchronised, including all the methods from "classic" Vector and
Hashtable. But the methods which they gained as part of the retrofitting to
the Collections framework (the ones inherited unaltered from AbstractList and
Dictionary) are not explicitly synchronised, and are not always safe. Worse,
there is no way of telling which of the "new" methods are safe except by
inspecting the sources to java.util.*. Similarly, there is no way of telling,
just from reading code which uses a Vector or Hashtable, whether it is using
methods from the safe "classic" set or from the potentially unsafe new
Collections set.
an "MT-level" attribute indicating its multithread behavior.
To see an example, go to docs.sun.com and search for e.g. malloc.
In these terms, most of the java.util methods are either unsafe or MT-safe.