public class IntegerArrayTest {
     public static void main(String[] args) {
         Integer a=1;
         Integer b=13;
         Integer c=25;
         /**
          * 0000 0000 0000 0000 0000 0000 0000 0000
          * 0000 0000 0000 0000 0000 0000 0000 0001   0的个数为31       1
          * 0000 0000 0000 0000 0000 0000 0000 1101   0的个数为28       13
          * 0000 0000 0000 0000 0000 0000 0001 1001   0的个数为27       25
          *   a的二进制为=1 最左边开始数起连续0的个数为31
          *   b的二进制为=1101 最左边开始数起连续0的个数为28
          *  c的二进制为=11001 最左边开始数起连续0的个数为27
          */
         System.out.println("a的二进制为="+Integer.toBinaryString(a)+" 最左边开始数起连续0的个数为"+Integer.numberOfLeadingZeros(a));
         System.out.println("b的二进制为="+Integer.toBinaryString(b)+" 最左边开始数起连续0的个数为"+Integer.numberOfLeadingZeros(b));
         System.out.println("c的二进制为="+Integer.toBinaryString(c)+" 最左边开始数起连续0的个数为"+Integer.numberOfLeadingZeros(c));
         
     }
}
 
public class AtomicIntegerArray implements java.io.Serializable {
    private static final long serialVersionUID = 2862133569453604235L;
  
    private static final Unsafe unsafe = Unsafe.getUnsafe();
    private static final int base = unsafe.arrayBaseOffset(int[].class);
    private static final int shift;
    private final int[] array;
 
    static {
        int scale = unsafe.arrayIndexScale(int[].class);
        if ((scale & (scale - 1)) != 0)
            throw new Error("data type scale not a power of two");
        shift = 31 - Integer.numberOfLeadingZeros(scale);
    }
}
1   /**
2      * 原子性的设置一个值
3      */
4     public final void set(int i, int newValue) {
5         unsafe.putIntVolatile(array, checkedByteOffset(i), newValue);
6     }
 /**
     * 原子性的设置一个值
     */
    public final void set(int newValue) {
        value = newValue;
    }
public static void automicIntegerArray() {
         /**
          * 创建一个原子性的数组,长度为5
          */
         AtomicIntegerArray atomicArray = new AtomicIntegerArray(5);
         /**
          * 设置第一个元素的值为5
          */
         atomicArray.set(0, 5);
         /**
          * 第一个元素减去1
          */
         int current = atomicArray.decrementAndGet(0);
         System.out.println("current = " + current);//current = 4
     }
/**
     * 创建一个原子性整※数组,并且长度为length;而且初始值都为0
     * elements initially zero.
     */
    public AtomicIntegerArray(int length) {
        array = new int[length];
    }
原文:https://www.cnblogs.com/gosaint/p/9053871.html