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 | Miscellaneous |
| Year of Publication | 2008 |
| Authors | Dig D, Marrero J, Ernst MD |
| 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 threads-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, which enables programmers to refactor sequential code into parallel code that uses <tt>j.u.c.</tt> 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.</p> |
| Downloads | Concurrencer implementation PDF PS |
| Citation Key | DigME2008:TR057 |
Last changed Mon, 2013-06-03 10:27

cs.