The book covers the topic, but for my taste, it does this way too shallow.
The source of that flaw might already reside in the design of the book:
Recipes in a cookbook in general give answers in terms of What and How, but usually do not answer the question Why ... and this book does not either.
I think, for one of the most difficult topics within Java, this is not an appropriate approach.
Things, I particularly criticize:
1.
The Java keyword "volatile" is not mentioned at all, nor is the bigger picture of the Java Memory Model. There is no way to become a good cook without that kind of background knowledge.
2.
On page 65 a chapter "Appendix: Concurrent Programming Design" is referred.
This chapter does not exist (at least) in the paperback version. I've found out, that you can download it on the website. To me, this indicates, that the book was published a bit too early without proper internal review.
3.
In the chapter above there is a paragraph "Avoiding deadlocks by ordering locks", which starts with a typical deadlock situation (BadLock.java). But what looks good at a first glance and is sold as solution (GoodLock.java), turns out to not solve anything; because it just passes the responsibility of the problem (always preserving the same order of locking) to the client of this class.
This turns the book from "just not useful" to even "harmful", since it gives an inexperienced reader a wrong feeling of certainty.
Bottom line:
Regarding Java Concurrency, the work done by real experts like Brian Goetz, Doug Lea, Josh Bloch or Angelika Langer still is much more valuable than this book, even if they do not cover Java 7 features.
This is also, because the main improvements were already done in Java 5.