Difference between Synchronized block with wait/notify and without them?

Alan picture Alan · Oct 20, 2011 · Viewed 11.7k times · Source

If I just use synchronized, not the wait/notify methods, will it still be thread-safe?

What's the difference?

Answer

Bozho picture Bozho · Oct 20, 2011

Using synchronized makes a method / block accessible by only on thread at a time. So, yes, it's thread-safe.

The two concepts are combined, not mutually-exclusive. When you use wait() you need to own the monitor on that object. So you need to have synchronized(..) on it before that. Using .wait() makes the current thread stop until another thread calls .notify() on the object it waits on. This is an addition to synchronized, which just ensures that only one thread will enter a block/method.