Thread safe means that a piece of code can only be accessed by one Thread at a time. This uses the synchronized keyword.
I am not sure if I agree with this... IMO, Thread Safe means that the class can be accessed by multiple threads, and it will still work as documented. It could be achieved by synchronization. It could be achieved by segmenting data. It could be achieved by optimistic locking. It could even be achieved by documenting that it will throw an exception condition, under certain situations.