Refactoring sequential Java code for concurrency via concurrent libraries

TitleRefactoring sequential Java code for concurrency via concurrent libraries
Publication TypeMiscellaneous
Year of Publication2008
AuthorsDig 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>
DownloadsConcurrencer implementation PDF PS
Citation KeyDigME2008:TR057
Last changed Mon, 2013-06-03 10:27