Java: In Java, which comparison about Java Memory Model, volatile, and synchronized is accurate?

Difficulty:

Easy

Questions:

1

Time Limit:

2 minutes

Passing Score:

100%

Question

In Java, which comparison about Java Memory Model, volatile, and synchronized is accurate?

  1. There is no practical difference in behavior, performance, or API design when Java Memory Model, volatile, and synchronized is involved.
  2. The oldest option related to Java Memory Model, volatile, and synchronized is always the right production choice regardless of context.
  3. volatile provides visibility and ordering for a variable, while synchronized also provides mutual exclusion for critical sections.
  4. 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