Java Memory Model

Java Memory Model è il capitolo 17 di Java Language Specification.

Un memory model definisce i possibili scenari e regole che governano più Thread all'interno di uno stesso sistena. In memory model determina se alla JVM è permessa una particolare esecuzione di un programma. Le specifiche Java non forzano le implementazioni delle JVM a seguire qualche particolare regola per l'esecuzione di un programma; questo da agli implementatori della JVM una grande flessibilità spesso utilizzata per permettere al compilatore ottimizzazioni aggressive basate spesso sul riordino delle istruzioni. Comunque sia il memory model di Java spcifica che tutte le implementazioni devono produrre risultati predicibili da parte del programmatore (se vengono da lui/lei seguite certe regole).

Il memory model definisce regole per l'utilizzo dei Thread ed il comportamento atteso di programmi multithread così da permettere agli sviluppatori di impostare di conseguenza i propri programmi. La responsabilità di evitare RaceCondition, deadlock ed altro sta tutta nel lavoro dello sviluppatore.