We present a machine-checked formalisation of the Java memory model and connect it to an operational semantics for Java source code and bytecode. This provides the link between sequential semantics and the memory model that has been missing in the literature. Our model extends previous formalisations by dynamic memory allocation, thread spawns and joins, infinite executions, the wait-notify mechanism and thread interruption. We prove the Java data race freedom guarantee for the complete formalisation in a modular way. This work makes the assumptions about the sequential semantics explicit and shows how to discharge them
We analyse the validity of common optimisations on multi-threaded programs in two memory models—the...
The most intuitive memory model for shared-memory multi-threaded programming is sequenti...
The semantics of the object-oriented, multi-threaded language Java is informally described in the Ja...
The Java programming language provides safety and security guarantees such as type safety and its se...
technical reportStandardized language level support for threads is one of the most important feature...
Standardized language level support for threads is one of the most important features of Java. Howev...
Java has integrated multithreading to a far greater extent than most programming languages. It is ...
Two features distinguish Java from other main-stream programming languages like C and C++: its built...
We present a generic framework to transform a single-threaded operational semantics into a semantics...
After many years, support for multithreading has been integrated into mainstream programming languag...
In a multithreaded program running on a multiprocessor platform, different processors may observe op...
Java threads are synchronised through primitives based upon monitor concepts developed in the early ...
A memory model for a concurrent imperative programming lan-guage specifies which writes to shared va...
This paper explains the details of the memory model underlying the verification of sequential Java ...
In Java, some memory updates are necessarily visible to some threads but never to others. A definiti...
We analyse the validity of common optimisations on multi-threaded programs in two memory models—the...
The most intuitive memory model for shared-memory multi-threaded programming is sequenti...
The semantics of the object-oriented, multi-threaded language Java is informally described in the Ja...
The Java programming language provides safety and security guarantees such as type safety and its se...
technical reportStandardized language level support for threads is one of the most important feature...
Standardized language level support for threads is one of the most important features of Java. Howev...
Java has integrated multithreading to a far greater extent than most programming languages. It is ...
Two features distinguish Java from other main-stream programming languages like C and C++: its built...
We present a generic framework to transform a single-threaded operational semantics into a semantics...
After many years, support for multithreading has been integrated into mainstream programming languag...
In a multithreaded program running on a multiprocessor platform, different processors may observe op...
Java threads are synchronised through primitives based upon monitor concepts developed in the early ...
A memory model for a concurrent imperative programming lan-guage specifies which writes to shared va...
This paper explains the details of the memory model underlying the verification of sequential Java ...
In Java, some memory updates are necessarily visible to some threads but never to others. A definiti...
We analyse the validity of common optimisations on multi-threaded programs in two memory models—the...
The most intuitive memory model for shared-memory multi-threaded programming is sequenti...
The semantics of the object-oriented, multi-threaded language Java is informally described in the Ja...