Async and non-blocking are the concepts du jour when it comes to concurrency on the JVM. If you want to go web scale, if you want to maximize concurrent performance, you just cannot afford to block.
But why? Blocking is not a problem in Erlang. Nor is it a problem in Go. How come we can't block on the JVM? And how does a non blocking request for data from a remote service actually work? I'll illustrate the whys, whens and hows with some simple code examples in plain java. Then I'll show you some practical examples of how to solve common programming problems in non-blocking frameworks like Vertx.io, Akka and Quasar.
Is the future non-blocking, or should we all start learning Erlang? Come find out!