Jesper Young wrote:You can also view it like this: Whether a method needs to be synchronized, really depends on the implementation of the method; it's an implementation detail. An abstract class only declares the interface of abstract methods, and doesn't know anything about the implementation (which is in a concrete subclass of the abstract class). It would be strange if an implementation detail is specified in the interface of a method.
You can use the 'synchronized' modifier on a concrete implementation of an abstract method, which is where it belongs.