Volatile menyediakan mekanisme sinkronisasi yang lemah untuk memastikan bahwa pembaruan variabel diberitahukan ke thread lain. Variabel volatil tidak di-cache dalam register atau tidak terlihat oleh prosesor lain, sehingga pembacaan variabel volatil selalu menghasilkan nilai tertulis terbaru. Hal ini dapat dibayangkan sebagai semantik berikut, namun volatil adalah mekanisme sinkronisasi yang lebih ringan. Volatile hanya dapat memastikan visibilitas, tetapi tidak menjamin atomisitas. Dengan kata lain, variabel volatil tidak dapat digunakan dalam operasi gabungan, seperti i++.
Copy kode kodenya sebagai berikut:
void setValue yang disinkronkan secara publik(nilai int){
this.nilai = nilai;
}
int getValue(){ yang disinkronkan publik
nilai kembalian;
}
Variabel volatil hanya dapat digunakan jika seluruh kondisi berikut terpenuhi:
1. Operasi penulisan ke variabel tidak bergantung pada nilai variabel saat ini, atau Anda dapat memastikan bahwa hanya satu thread yang memperbarui nilai variabel.
2. Variabel ini tidak akan dimasukkan dalam kondisi invarian bersama dengan variabel keadaan lainnya
3. Tidak perlu mengunci saat mengakses variabel.