volatile đảm bảo các lần đọc/ghi biến đều thực hiện trực tiếp trên main memory, không qua CPU cache, đảm bảo thread visibility. Thay đổi sẽ hiển thị ngay cho tất cả thread. Dùng cho: flags, initialization.
Ví dụ: volatile boolean stopFlag;. KHÔNG phù hợp cho compound operations — count++ vẫn không atomic với volatile. volatile chỉ đảm bảo visibility, không đảm bảo atomicity hay synchronization. Dùng AtomicInteger khi cần atomicity.