happens-before là đảm bảo của Java Memory Model (JMM): nếu Action A happens-before Action B, các thay đổi của A phải hiển thị với B.
- Các quy tắc: synchronized exit before next entry (unlock → lock tiếp theo), write before read trên cùng volatile, thread start before các action được thực thi, object constructor before finalizer.
- Memory barriers: CPU instructions buộc flush/reload cache, JVM cài đặt để đảm bảo correctness.
- Nền tảng của Java concurrency safety — lập trình viên suy luận về correctness mà không cần biết chi tiết CPU cache.