Abstract

Core Semantics of Multithreaded Java
Jeremy Manson - Univ. of Maryland
William Pugh - Univ. of Maryland
Java has integrated multithreading to a
far greater extent than most programming languages.
It is also one of the only languages
that specifies and requires safety guarantees for
improperly synchronized programs.
It turns out that understanding these issues is far more subtle
and difficult than was previously thought.
The existing specification makes guarantees that
prohibit standard and proposed compiler optimizations; it also
omits guarantees that are necessary for safe
execution of much existing code.
Some guarantees that are made (e.g., type safety)
raise tricky implementation issues
when running unsynchronized code on SMPs with
weak memory models.

This paper reviews those issues.  It proposes
a new core semantics for Java that allows for
aggressive compiler optimization and addresses
the safety and multithreading issues. Due to space
constraints, certain side issues
are addressed
only in the full version of the semantics.