Class PaddedAtomicLong

java.lang.Object
java.lang.Number
java.util.concurrent.atomic.AtomicLong
com.bytedesk.core.uid.utils.PaddedAtomicLong
All Implemented Interfaces:
Serializable

public class PaddedAtomicLong extends AtomicLong
Represents a padded AtomicLong to prevent the FalseSharing problem

The CPU cache line commonly be 64 bytes, here is a sample of cache line after padding:
64 bytes = 8 bytes (object reference) + 6 * 8 bytes (padded long) + 8 bytes (a long value)

Author:
yutianbao
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • p1

      public volatile long p1
      Padded 6 long (48 bytes)
    • p2

      public volatile long p2
      Padded 6 long (48 bytes)
    • p3

      public volatile long p3
      Padded 6 long (48 bytes)
    • p4

      public volatile long p4
      Padded 6 long (48 bytes)
    • p5

      public volatile long p5
      Padded 6 long (48 bytes)
    • p6

      public volatile long p6
      Padded 6 long (48 bytes)
  • Constructor Details

    • PaddedAtomicLong

      public PaddedAtomicLong()
      Constructors from AtomicLong
    • PaddedAtomicLong

      public PaddedAtomicLong(long initialValue)
  • Method Details

    • sumPaddingToPreventOptimization

      public long sumPaddingToPreventOptimization()
      To prevent GC optimizations for cleaning unused padded references