转载自 http://www.cnblogs.com/skywang12345/p/java_threads_category.html
JUC:java.util.concurrent
一,JUC原子类
根据修改的数据类型,可以将JUC包中的原子操作类可以分为4类。
1. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ;
2. 数组类型: AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray ;
3. 引用类型: AtomicReference, AtomicStampedRerence, AtomicMarkableReference ;
4. 对象的属性修改类型: AtomicIntegerFieldUpdater, AtomicLongFieldUpdater, AtomicReferenceFieldUpdater 。
这些类存在的目的是对相应的数据进行原子操作。所谓原子操作,是指操作过程不会被中断,保证数据操作是以原子方式进行的。
AtomicLong:
AtomicLong是作用是对长整形进行原子操作。
在32位操作系统中,64位的long 和 double 变量由于会被JVM当作两个分离的32位来进行操作,所以不具有原子性。而使用AtomicLong能让long的操作保持原子型。
示例:
packagecom.util.concurrent.atomic;importjava.util.concurrent.atomic.AtomicLong;public classAtomicLongTest {public static voidmain(String[] args) {//TODO Auto-generated method stub
AtomicLong mAtoLong= newAtomicLong();
mAtoLong.set(0x0123456789ABCDEFL);
System.out.println("toString()" +mAtoLong.toString());
System.out.println("get()" +mAtoLong.get());
System.out.println("intValue()" +mAtoLong.intValue());
System.out.println("longValue()" +mAtoLong.longValue());
System.out.println("incrementAndGet()" +mAtoLong.incrementAndGet());
System.out.println("getAndIncrement()" +mAtoLong.getAndIncrement());
System.out.println("decrementAndGet()" +mAtoLong.decrementAndGet());
System.out.println("getAndDecrement()" +mAtoLong.getAndDecrement());
System.out.println("get()" +mAtoLong.get());
System.out.println("addAndGet()" + mAtoLong.addAndGet(0x10));
System.out.println("getAndAdd()" + mAtoLong.getAndAdd(0x10));
System.out.println("getAndSet()" + mAtoLong.getAndSet(0x0123456789ABCDEEL));
System.out.println("compareAndSet()" + mAtoLong.compareAndSet(0x0123456789ABCDEEL, 0x0123456789ABCDEDL));
System.out.println("get()" +mAtoLong.get());
}
}
结果:
toString()81985529216486895get()81985529216486895intValue()-1985229329longValue()81985529216486895incrementAndGet()81985529216486896getAndIncrement()81985529216486896decrementAndGet()81985529216486896getAndDecrement()81985529216486896get()81985529216486895addAndGet()81985529216486911getAndAdd()81985529216486911getAndSet()81985529216486927compareAndSet()trueget()81985529216486893
原文:http://www.cnblogs.com/IvySue/p/7470387.html