Safe locking for multi-threaded java

  • Authors:
  • Einar Broch Johnsen;Thi Mai Thuong Tran;Olaf Owe;Martin Steffen

  • Affiliations:
  • Department of Informatics, University of Oslo, Norway;Department of Informatics, University of Oslo, Norway;Department of Informatics, University of Oslo, Norway;Department of Informatics, University of Oslo, Norway

  • Venue:
  • FSEN'11 Proceedings of the 4th IPM international conference on Fundamentals of Software Engineering
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

There are many mechanisms for concurrency control in high-level programming languages. In Java, the original mechanism for concurrency control, based on synchronized blocks, is lexically scoped. For more flexible control, Java 5 introduced non-lexical operators, supporting lock primitives on re-entrant locks. These operators may lead to run-time errors and unwanted behavior; e.g., taking a lock without releasing it, which could lead to a deadlock, or trying to release a lock without owning it. This paper develops a static type and effect system to prevent the mentioned lock errors for non-lexical locks. The effect type system is formalized for an object-oriented calculus which supports non-lexical lock handling. Based on an operational semantics, we prove soundness of the effect type analysis. Challenges in the design of the effect type system are dynamic creation of threads, objects, and especially of locks, aliasing of lock references, passing of lock references between threads, and reentrant locks as found in Java.