Suppose two following counter implementations:
class Counter { private final AtomicInteger atomic = new AtomicInteger(0); private int i = 0; public void i
atomic variables will always be faster.
you can see that the java.util.concurrent package always utilises atomic variables rather than synchronized blocks.