The performance of synchronization has actually become a whole lot better with Java 5 and 6, up to the point where there's practically no slowdown in the case of an uncontested lock.
I disagree that the java.util.concurrent package is only for experts (or maybe our definitions of "expert" are different :-). It's non-trivial stuff, to be sure, and you need to know what you're doing, but there's some very useful stuff in there, like ReentrantReadWriteLock and Executor and friends.
If you're at all serious about multi-threaded Java programming -and who isn't these days?-, I advise to read one of the eminent books (either Goetz or Oaks/Wong).
Ping & DNS - updated with new look and Ping home screen widget