Are you asking if you need the keyword "synchronized"? or do you need something to synchronize (mutex) your code?
In the beginning, the only way to write thread safe code was to use the keyword "synchronized"
Java 5 implemented a number of new classes and methods for synchronization, so you can use things like ReadWriteLock and achieve the same effect. So the keyword is not the only way to do it, but you must write thread safe code if you use threads.