Java: Which practice avoids a common mistake with Java Memory Model, volatile, and synchronized?

Difficulty:

Medium

Questions:

1

Time Limit:

2 minutes

Passing Score:

100%

Question

Which practice avoids a common mistake with Java Memory Model, volatile, and synchronized?

  1. Do not use volatile as a substitute for full thread safety on compound state updates.
  2. Ignore the Java Memory Model, volatile, and synchronized issue and rely on team discipline instead of APIs or contracts.
  3. Silence the Java Memory Model, volatile, and synchronized problem by using raw types, broad catches, or shared mutable state.
  4. Prefer the version of Java Memory Model, volatile, and synchronized that makes behavior less predictable as long as the code compiles.

Hint

Look for the option that protects correctness instead of hiding the problem.

Answer and rationale

Correct answer: A. Do not use volatile as a substitute for full thread safety on compound state updates.

Do not use volatile as a substitute for full thread safety on compound state updates. This is a common failure mode in real Java code and a frequent interview follow-up.

Track: Java