Vector as an object is thread-safe (synched methods) same goes for obtaining a List like so:
Collections.synchronizedList(new ArrayList());
[Incidentally don't use Vectors if you can help it, they are more or less deprecated]
But all this means is that multiple threads will not corrupt the data within the Collection. ie when a
thread puts something at index 12 then that is where it goes. This guarantee does not hold for a plain List.
The upshot is that there is a big performance gain in regular Lists when concurrency isn't an issue.
However you must still ensure that the code that uses a thread-safe Collection is thread-safe itself. It doesn't have magic powers!
if(myList.contains(myObj)) {
myList.remove(myObj);
}
does that look thread-safe, whatever the flavour of the List?