This book suffers from a number of problems: the author only scratches the surface of the topics, giving shallow explanations of how things are supposed to work under the hood, but offering no references to support arguments or to help the reader delve even deeper into his knowledge. There is simply no way to reach the same level of understanding as the author on how Java NIO works without the readers perusing the JVM source code themselves. Some of his chapters contain verbatim copies of the Java API documentation, without the author offering any additional insights. The book is outdated, it is from the time of JDK 4, and I'm writing this review at the point when JDK 14 is the latest. So, there is a lot of things the book does not cover, for example, asynchronous channels and everything in so-called NIO 2, both introduced in JDK 7.
However, for me, its biggest flaw is failing to truly cover in rich details everything related to the implementation of non-blocking I/O APIs. Particularly the examples for the chapters on selectors are extremely superficial and in many cases, the author himself fails to explain in full details how to deal with the non-blocking nature of reads and writes, how to control with backpressure, how to properly implement a reactor pattern, etc.
Unfortunately, today, this is one of the few books covering this topic and so most of us must make do with this and whatever other bits of information we can find on the web. I cannot say the book is all bad, reading it was not a waste of time. I did learn a lot, but the book is not as good as I was expecting.
This is definitively an area where somebody could write a very good book that could become a real classic.