คีย์เวิร์ดระเหยถูกใช้ในสภาพแวดล้อมแบบมัลติเธรดโดยที่เธรดสองเธรดอ่านและเขียนตัวแปรเดียวกันพร้อมกัน คีย์เวิร์ดระเหยจะล้างการเปลี่ยนแปลงโดยตรงไปยังหน่วยความจำหลักแทนแคชของ CPU
ในทางกลับกัน มีการใช้คีย์เวิร์ดชั่วคราวในระหว่างการทำให้เป็นอันดับ ฟิลด์ที่ถูกทำเครื่องหมายเป็นชั่วคราวไม่สามารถเป็นส่วนหนึ่งของการทำให้เป็นอันดับและการดีซีเรียลไลซ์เซชัน เราไม่ต้องการบันทึกค่าของตัวแปรใดๆ จากนั้นเราใช้คีย์เวิร์ดชั่วคราวกับตัวแปรนั้น
ซีเนียร์ เลขที่ | คีย์ | ระเหย | ชั่วคราว |
---|---|---|---|
1 | พื้นฐาน | คีย์เวิร์ดระเหยใช้เพื่อล้างการเปลี่ยนแปลงโดยตรงไปยังหน่วยความจำหลัก | คีย์เวิร์ดชั่วคราวใช้เพื่อแยกตัวแปรระหว่างการทำให้เป็นอนุกรม |
2. | ค่าเริ่มต้น | Volatile ไม่ได้เริ่มต้นด้วยค่าเริ่มต้น | ในระหว่างการดีซีเรียลไลซ์เซชัน ตัวแปรชั่วคราวจะถูกเริ่มต้นด้วยค่าเริ่มต้น |
3 | คงที่ | Volatile สามารถใช้กับตัวแปรคงที่ได้ | ไม่สามารถใช้ชั่วคราวกับคำหลักคงที่ |
4 | รอบชิงชนะเลิศ | Volatile สามารถใช้กับคีย์เวิร์ดสุดท้ายได้ | ไม่สามารถใช้ชั่วคราวกับคำหลักสุดท้าย |
ตัวอย่างชั่วคราว
// A sample class that uses transient keyword to // skip their serialization. class TransientExample implements Serializable { transient int age; // serialize other fields private String name; private String address; // other code }
ตัวอย่างความผันผวน
class VolatileExmaple extends Thread{ boolean volatile isRunning = true; public void run() { long count=0; while (isRunning) { count++; } System.out.println("Thread terminated." + count); } public static void main(String[] args) throws InterruptedException { VolatileExmaple t = new VolatileExmaple(); t.start(); Thread.sleep(2000); t.isRunning = false; t.join(); System.out.println("isRunning set to " + t.isRunning); } }