Efficient coroutines for the Java platform
Lukas Stadler, Thomas Würthinger, Christian L. Wimmer · 2010
Coroutines are non-preemptive lightweight processes. Their advantage over threads is that they do not have to be synchronized because they pass control to each other explicitly and deterministically. Coroutines are therefore an elegant and efficient implementation construct for numerous algorithmic problems.