What operations in Java are considered atomic?

robinmag picture robinmag · Jan 21, 2011 · Viewed 27.4k times · Source

What operations in Java are considered atomic?

Answer

maaartinus picture maaartinus · Jan 21, 2011
  • all assignments of primitive types except for long and double
  • all assignments of references
  • all assignments of volatile variables
  • all operations of java.concurrent.Atomic* classes

and maybe something more. Look at the jls.

As noted in the comments, atomicity does not imply visibility. So while another thread is guaranteed not to see a partially written int, it may never see the new value.

The operations on long and double are on common 64 bit CPUs atomic as well, although there's no guarantee. See also this feature request.