Refactoring Sequential Java Code for Concurrency via Concurrent Libraries
Author(s)
Ernst, Michael D.; Marrero, John; Dig, Danny
DownloadMIT-CSAIL-TR-2008-057.pdf (232.9Kb)
Additional downloads
Other Contributors
Program Analysis
Advisor
Michael Ernst
Terms of use
Metadata
Show full item recordAbstract
Parallelizing existing sequential programs to run efficiently on multicores is hard. The Java 5 packagejava.util.concurrent (j.u.c.) supports writing concurrent programs: much of the complexity of writing threads-safe and scalable programs is hidden in the library. To use this package, programmers still need to reengineer existing code. This is tedious because it requires changing many lines of code, is error-prone because programmers can use the wrong APIs, and is omission-prone because programmers can miss opportunities to use the enhanced APIs. This paper presents our tool, CONCURRENCER, which enables programmers to refactor sequential code into parallel code that uses j.u.c. concurrent utilities. CONCURRENCER does not require any program annotations, although the transformations are very involved: they span multiple program statements and use custom program analysis. A find-and-replace tool can not perform such transformations. Empirical evaluation shows that CONCURRENCER refactors code effectively: CONCURRENCER correctly identifies and applies transformations that some open-source developers overlooked, and the converted code exhibits good speedup.
Date issued
2008-09-30Series/Report no.
MIT-CSAIL-TR-2008-057
Keywords
program transformations, concurrency, refactoring, library
Collections
The following license files are associated with this item: