TitleRefactoring sequential Java code for concurrency via concurrent libraries
Publication TypeConference Paper
Year of Publication2009
AuthorsDig D, Marrero J, Ernst MD
Conference NameICSE 2009, Proceedings of the 31st International Conference on Software Engineering
Pagination397–407
Date or Month PublishedMay
Conference LocationVancouver, BC, Canada
AbstractParallelizing existing sequential programs to run efficiently on multicores is hard. The Java 5 package \textttjava.util.concurrent (\textttj.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 \emphtedious because it requires changing many lines of code, is \empherror-prone because programmers can use the wrong APIs, and is \emphomission-prone because programmers can miss opportunities to use the enhanced APIs. \par This paper presents our tool, Concurrencer, that enables programmers to refactor sequential code into parallel code that uses three \textttj.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.
Downloadshttps://web.archive.org/web/20170709075029/https://refactoring.info/tool... Concurrencer implementation https://homes.cs.washington.edu/~mernst/pubs/concurrent-refactoring-icse... PDF
Citation KeyDigME2009