คีย์เวิร์ดระเหยถูกใช้ในสภาพแวดล้อมแบบมัลติเธรดโดยที่เธรดสองเธรดอ่านและเขียนตัวแปรเดียวกันพร้อมกัน คีย์เวิร์ดระเหยจะล้างการเปลี่ยนแปลงโดยตรงไปยังหน่วยความจำหลักแทนแคชของ 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);
}
}