> However, Ada has the disadvantage of not having synchronized methods.
> ...

Ada's protected subprograms are essentially identical to synchronized methods.
However, protected subprograms come with the added safety that a
protected object is fully encapsulated by protected subprograms,
whereas in Java there is nothing precluding someone from adding an
unsynchronized method by mistake and thereby destroying the nicely
synchronized access.

Note that in the Ada to Java compilers, Ada's protected subprograms
are implemented using synchronized methods, because they have
such nearly identical semantics.