Flexible Task Graphs: A unified restricted thread programming model for Java
Abstract
The disadvantages of unconstrained shared-memory multi-threadingin Java, especially with regard to latency and determinism in realtimesystems, have given rise to a variety of language extensionsthat place restrictions on how threads allocate, share, and communicatememory, leading to order-of-magnitude reductions in latencyand jitter. However, each model makes different trade-offs with respectto expressiveness, efficiency, enforcement, and latency, andno one model is best for all applications.In this paper we present Flexible Task Graphs (Flexotasks), asingle system that allows different isolation policies and mechanismsto be combined in an orthogonal manner, subsuming fourpreviously proposed models as well as making it possible to usenew combinations best suited to the needs of particular applications.We evaluate our implementation on top of the IBM Web-Sphere Real Time Java virtual machine using both a microbenchmarkand a 30 KLOC avionics collision detector. We show thatFlexotasks are capable of executing periodic threads at 10 KHzwith a standard deviation of 1-2μs and that it achieves significantly better performance than RTSJ's scoped memory constructs whileremaining impervious to interference from global garbage collection. Copyright © 2008 ACM.