I\'m studying the book \"Distributed Systems\" (by Tanenbaum & Van Steen) and they say something that seems to conflict to what seems to be instead thought by many on Java R
You should also be aware that Java multi-threading has changed significantly since 1996. The notify() and wait() methods that were part of the original language design got a lot of flack from concurrency experts and in Java 5 (2004, says wiki) high level concurrency objects like the ReentrantLock were introduced which are now the preferred way of doing things.
So the criticisms you mention are probably correct, but outdated.