MULTILISP: a language for concurrent symbolic computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Error recovery in asynchronous systems
IEEE Transactions on Software Engineering
A future-based parallel language for a general-purpose highly-parallel computer
Selected papers of the second workshop on Languages and compilers for parallel computing
The C++ programming language (2nd ed.)
The C++ programming language (2nd ed.)
An exception handling model for parallel programming and its verification
SIGSOFT '91 Proceedings of the conference on Software for citical systems
Eiffel: the language
Parallel programming in Split-C
Proceedings of the 1993 ACM/IEEE conference on Supercomputing
Cilk: an efficient multithreaded runtime system
PPOPP '95 Proceedings of the fifth ACM SIGPLAN symposium on Principles and practice of parallel programming
The implementation of the Cilk-5 multithreaded language
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Proceedings of the ACM 2000 conference on Java Grande
Adaptive optimization in the Jalapeño JVM
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Concurrent Exception Handling and Resolution in Distributed Object Systems
IEEE Transactions on Parallel and Distributed Systems
ACM Algorithm 395: Student's t-distribution
Communications of the ACM
Java Language Specification, Second Edition: The Java Series
Java Language Specification, Second Edition: The Java Series
FORTRAN 90 Programming
Lazy Task Creation: A Technique for Increasing the Granularity of Parallel Programs
IEEE Transactions on Parallel and Distributed Systems
Process structuring, synchronization, and recovery using atomic actions
Proceedings of an ACM conference on Language design for reliable software
System structure for software fault tolerance
Proceedings of the international conference on Reliable software
Exception handling and resolution in distributed object-oriented systems
ICDCS '96 Proceedings of the 16th International Conference on Distributed Computing Systems (ICDCS '96)
Coordinated Exception Handling in Distributed Object Systems: From Model to System Implementation
ICDCS '98 Proceedings of the The 18th International Conference on Distributed Computing Systems
Concurrent Exception Handling in a Distributed Object-Oriented Computing Environment
ICPADS '00 Proceedings of the Seventh International Conference on Parallel and Distributed Systems: Workshops
Proceedings of the 4th international symposium on Memory management
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
X10: an object-oriented approach to non-uniform cluster computing
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Language and Virtual Machine Support for Efficient Fine-Grained Futures in Java
PACT '07 Proceedings of the 16th International Conference on Parallel Architecture and Compilation Techniques
Exception Handling and Software Fault Tolerance
IEEE Transactions on Computers
IEEE Transactions on Software Engineering
Why do developers neglect exception handling?
Proceedings of the 4th international workshop on Exception handling
As-if-serial exception handling semantics for Java futures
Science of Computer Programming
Exception handling negligence due to intra-individual goal conflicts
CHASE '09 Proceedings of the 2009 ICSE Workshop on Cooperative and Human Aspects on Software Engineering
COORDINATION '09 Proceedings of the 11th International Conference on Coordination Models and Languages
Global-to-local approach to rigorously developing distributed system with exception handling
Journal of Computer Science and Technology
LCPC'09 Proceedings of the 22nd international conference on Languages and Compilers for Parallel Computing
Dependence analysis for safe futures
Science of Computer Programming
Isolating determinism in multi-threaded programs
RV'11 Proceedings of the Second international conference on Runtime verification
Hi-index | 0.00 |
A future is a simple and elegant construct that programmers can use to identify potentially asynchronous computation and to introduce parallelism into serial programs. In its recent 5.0 release, Java provides an interface-based implementation of futures that enables users to encapsulate potentially asynchronous computation and to define their own execution engines for futures. In prior work, we have proposed an alternative model, called directive-based lazy futures (DBLFutures), to support futures in Java, that simplifies Java programmer effort and improves performance and scalability of future-based applications. In the DBLFuture model, programmers use a new directive, "@future", to specify potentially concurrent computations within a serial program. DBLFutures enable programmers to focus on the logic and correctness of a program in the serial version first, and then to introduce parallelism gradually and intuitively. Moreover, DBLFutures provide greater flexibility to the Java virtual machine for efficient future support. In this paper, we investigate the exception handling aspect of futures in Java. In Java 5.0 Future APIs, exceptions of future execution are propagated to the point in the program at which future values are queried (used). We show that this exception handling model is not appropriate or desirable for DBLFutures. Instead, we propose an as-if-serial exception handling mechanism for DBL-Futures in which the system delivers exceptions at the same point as they would be delivered if the program was executed sequentially. Our approach, we believe, provides programmers with intuitive exception handling behavior and control. We present the design and implementation of our approach within the DBLFuture framework in the Jikes Research Virtual Machine. Our results show that our implementation introduces negligible overhead for applications without exceptions, and guarantees serial semantics of exception handling for applications that throw exceptions.