Refactoring sequential Java code for concurrency via concurrent libraries
Submitted by mernst on Wed, 2011-11-30 14:35
| Title | Refactoring sequential Java code for concurrency via concurrent libraries |
| Publication Type | Conference Paper |
| Year of Publication | 2009 |
| Authors | Dig D, Marrero J, Ernst MD |
| Conference Name | ICSE'09, Proceedings of the 31st International Conference on Software Engineering |
| Date or Month Published | May 20–22 |
| Conference Location | Vancouver, BC, Canada |
| Abstract | <p>Parallelizing existing sequential programs to run efficiently on multicores is hard. The Java 5 package <tt>java.util.concurrent</tt> (<tt>j.u.c.</tt>) 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 <em>tedious</em> because it requires changing many lines of code, is <em>error-prone</em> because programmers can use the wrong APIs, and is <em>omission-prone</em> because programmers can miss opportunities to use the enhanced APIs. </p> <p> This paper presents our tool, Concurrencer, that enables programmers to refactor sequential code into parallel code that uses three <tt>j.u.c.</tt> 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.</p> |
| Downloads | Concurrencer implementation PDF |
| Citation Key | DigME2009 |
Last changed Mon, 2013-06-03 10:27

cs.