http://docs.paralleluniverse.co/quasar/
They claim to have "true lightweight" threads. (I am sure pron if he is a around can jump in and expand on it).
It takes a lot from Erlang even pattern matching.
The downside is that libraries have to be integrated in order to block gracefully when called on fibers, but we already have a long and growing list of integration modules for popular libraries.
It seems this would move most of the heavy lifting into the kernel (and out of the already-very-complicated JVM). Anyone know what happened to that work?
Maybe the JVM allows for more fine grained control on PC location, and allows to "go to" different places in the code without invoking a native thread. But I know that when you create a Quasar co-routine / green thread / user thread / continuation or whatever we want to call it, then it's not the same as Akka.
In Akka, if you have a "conversation" between a million actors in a circle, you can still get 1 thread to be reused, if there is no need to use more than one. But if you try to do 3 things in 100% parallel, you might find yourself with 3 threads (from the little that I know).
In quasar, you can do all that, without invoking an OS thread, I think this is the main difference.
sample code: http://docs.oracle.com/javase/tutorial/essential/concurrency...