Voglio sapere se la creazione di un nuovo thread in Java attiva un flush della cache. Supponiamo che faccio qualcosa di simile, in questa sequenza:La creazione di una nuova discussione ha un effetto collaterale sullo svuotamento della cache?
- A corre filo e imposta una variabile X.
- Il filo crea un nuovo thread.
- Il nuovo thread accede X.
mia domanda è questa: è il nuovo thread, sia nel momento in cui viene creato o nel momento in cui inizia l'esecuzione, garantito per vedere l'aggiornamento fatto per X da parte del thread precedente nel passaggio 1? Capisco che se il vecchio thread cambia il valore di X in futuro, non è garantito che il nuovo thread vedrà queste modifiche. Va bene. Voglio solo sapere se il nuovo thread vedrà i giusti valori quando si avvia senza necessità di sincronizzazione esplicita.
Quando ho deciso di esaminare questo argomento, ho pensato che una semplice ricerca su google avrebbe rivelato immediatamente la risposta, ma per qualche motivo, non riesco a trovare alcun risultato che risolva questa domanda.
Perché si basano su tali garanzie oscuri (se esistono tutto) se si può semplicemente rendere la variabile in questione 'volatile'? – delnan
@delnan: non c'è nulla di oscuro qui. Questo comportamento è chiaramente specificato nelle specifiche del linguaggio Java. –
Ora una domanda di garanzia più oscura potrebbe essere: "A scrive X; B creato; C legge X" - il comportamento di questo è definito? :-) –