Update to use AtomicIntegerFieldUpdater and volatile fields for less overhead