Download: PDF, slides (PDF), slides (ODP), Concurrencer implementation.
“Refactoring sequential Java code for concurrency via concurrent
libraries”
by
Danny Dig,
John Marrero, and
Michael D. Ernst.
In ICSE 2009, Proceedings of the 31st International Conference on
Software Engineering, (Vancouver, BC, Canada), May 2009, pp. 397-407.
A previous version appeared as MIT
Computer Science and Artificial Intelligence Laboratory technical
report MIT-CSAIL-TR-2008-057, (Cambridge, MA), September 30, 2008.
Parallelizing existing sequential programs to run efficiently on
multicores is hard. The Java 5 package java.util.concurrent
(j.u.c.
) supports writing concurrent programs: much of the
complexity of writing thread-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, that enables programmers to
refactor sequential code into parallel code that uses three
j.u.c.
concurrent utilities. Concurrencer does not require
any program annotations. Its transformations span multiple, non-adjacent,
program statements. A find-and-replace tool can not perform such
transformations, which require program analysis. 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.
Download: PDF, slides (PDF), slides (ODP), Concurrencer implementation.
BibTeX entry:
@inproceedings{DigME2009, author = {Danny Dig and John Marrero and Michael D. Ernst}, title = {Refactoring sequential {Java} code for concurrency via concurrent libraries}, booktitle = {ICSE 2009, Proceedings of the 31st International Conference on Software Engineering}, pages = {397--407}, address = {Vancouver, BC, Canada}, month = may, year = {2009} }
(This webpage was created with bibtex2web.)
Back to Michael Ernst's publications.