This week's book giveaway is in the Mac OS forum. We're giving away four copies of a choice of "Take Control of Upgrading to Yosemite" or "Take Control of Automating Your Mac" and have Joe Kissell on-line! See this thread for details.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
You can find great tutorials on using NIO by searching Google. I did one from IBM's DeveloperWorks, and it was pretty complete.
The main concept is that non-blocking sockets don't block when no data is available to read or the buffer is too full to write. That's it in a nut shell.
Normally, if you have a server that handles multiple requests simultaneously, with blocking I/O you're forced to use a separate thread for each request. If you want to handle 1000 clients at once, you need 1000 threads. Since the majority of time the threads are blocked waiting on I/O operations, this is a huge waste of resources.
With non-blocking I/O, you can have one thread handle all the requests. The thread loops checking a bunch of sockets at once for available data rather than blocking on a single socket.