JavaAdvanced#concurrency

Difference between synchronized and volatile?

synchronized provides mutual exclusion and visibility for blocks/methods. volatile guarantees visibility (reads see the latest write) but not atomicity. Use volatile for simple flags, synchronized or Locks for compound actions.

Example
private volatile boolean running = true; // visibility only
public synchronized void increment() { count++; } // mutual exclusion + visibility

Related Questions

1
JavaAdvanced#concurrency

What is the Executor framework?

Open
2
JavaIntermediate#concurrency

What is the difference between Callable and Runnable?

Open
3
JavaAdvanced#concurrency

Explain wait(), notify() and notifyAll().

Open