My understanding of synchronized and thread safe is that any code which is synchronized can only be executed by one thread at a time and thread safe is when no two threads access the same data at the same time.
In the case of a Vector you use methods such as
to access a manipulate the data. These methods are synchronized so there can only ever be one thread inside at a time.
Have a look at this http://java.sun.com/docs/books/tutorial/essential/threads/monitors.html
This quote is from the same page.
"Whenever control enters a synchronized method, the thread that called the method locks the object whose method has been called. Other threads cannot call a synchronized method on the same object until the object is unlocked. "
I'm not sure if that answers your question