Projects > Compiler and JVM Research at JKU
Coroutines are non-preemptive light-weight 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.
- Lukas Stadler:
Serializable Coroutines for the HotSpot™ Java Virtual Machine
Master's thesis, Johannes Kepler University Linz, February 2011.
This thesis provides a description of the basics of JVMs and coroutines and how they fit together, followed by an introduction into the Java API for coroutines.
It shows the details of the prototype implementation, along with performance measurements and source code examples.
This thesis also introduces the notion of coroutine serialization and thread-to-thread migration.
- Lukas Stadler, Thomas Würthinger, Christian Wimmer:
Efficient Coroutines for the Java Platform
8th Intl. Conf. on Principles and Practice of Programming in Java (PPPJ'10),
pp. 20-28. ACM Press, 2010. doi:10.1145/1852761.1852765
This conference paper describes the basic algorithm of our prototype implementation, which combines a stack-based approach for fast switching between coroutines with a copying based approach that allows large numbers of coroutines to be generated.