Question
In Java, which comparison about Java Memory Model, volatile, and synchronized is accurate?
- There is no practical difference in behavior, performance, or API design when Java Memory Model, volatile, and synchronized is involved.
- The oldest option related to Java Memory Model, volatile, and synchronized is always the right production choice regardless of context.
- volatile provides visibility and ordering for a variable, while synchronized also provides mutual exclusion for critical sections.
- Differences around Java Memory Model, volatile, and synchronized are mostly cosmetic, so correctness and maintainability do not change.
Hint
Focus on the behavior or tradeoff, not just the keyword.
Answer and rationale
Correct answer: C. volatile provides visibility and ordering for a variable, while synchronized also provides mutual exclusion for critical sections.
volatile provides visibility and ordering for a variable, while synchronized also provides mutual exclusion for critical sections. This is the comparison that usually separates memorization from understanding.
Track: Java