Efficient Support of Fine-grained Futures in Java

Lingli Zhang, Chandra Krintz, and Sunil Soman

Abstract

We present and empirically evaluate a
novel implementation of the futures for Java.
A future is a parallel programming language construct that enables
programmers to specify potential asynchronous computations.
Our future implementation is a JVM extension
that couples estimates of future computational granularity
with underlying resource availability to enable the JVM to
automatically and adaptively decide when to spawn futures
in parallel or to execute them sequentially.
Our system builds from, combines, and extends
(i) lazy task creation and
(ii) a JVM program sampling infrastructure (common
to many state-of-the-art JVM implementations) previously
used solely for dynamic and adaptive compilation.
We empirically evaluate our system using different benchmarks,
triggers for automatic spawning of futures, processor availability,
and JVM configurations.
We show that our future implementation for Java
is efficient and scalable for fine-grained Java futures without
requiring programmer intervention.