Volatile มีกลไกการซิงโครไนซ์ที่อ่อนแอเพื่อให้แน่ใจว่าการอัพเดตตัวแปรจะได้รับการแจ้งเตือนไปยังเธรดอื่น ตัวแปรระเหยไม่ได้ถูกแคชไว้ในรีจิสเตอร์หรือมองไม่เห็นโดยโปรเซสเซอร์อื่น ดังนั้นการอ่านตัวแปรระเหยจะส่งคืนค่าที่เขียนล่าสุดเสมอ สามารถจินตนาการได้ว่าเป็นความหมายต่อไปนี้ แต่ความผันผวนเป็นกลไกการซิงโครไนซ์ที่มีน้ำหนักเบากว่า การระเหยสามารถรับประกันการมองเห็นได้เท่านั้น แต่ไม่สามารถรับประกันความเป็นอะตอมมิกได้ กล่าวอีกนัยหนึ่ง ตัวแปรระเหยไม่สามารถใช้ในการดำเนินการคอมโพสิต เช่น i++
คัดลอกรหัสรหัสดังต่อไปนี้:
setValue โมฆะที่ซิงโครไนซ์สาธารณะ (ค่า int) {
this.value = ค่า;
-
สาธารณะซิงโครไนซ์ int getValue () {
ค่าส่งคืน;
-
ตัวแปรระเหยสามารถใช้ได้เมื่อตรงตามเงื่อนไขทั้งหมดต่อไปนี้เท่านั้น:
1. การดำเนินการเขียนไปยังตัวแปรไม่ได้ขึ้นอยู่กับค่าปัจจุบันของตัวแปร หรือคุณสามารถมั่นใจได้ว่ามีเพียงเธรดเดียวเท่านั้นที่อัปเดตค่าตัวแปร
2. ตัวแปรนี้จะไม่รวมอยู่ในเงื่อนไขค่าคงที่พร้อมกับตัวแปรสถานะอื่นๆ
3. ไม่จำเป็นต้องล็อคเมื่อเข้าถึงตัวแปร