码迷,mamicode.com
首页 > 编程语言 > 详细

Java高级特性系列--Concurrent

时间:2017-09-03 19:36:29      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:code   port   reads   blog   子类   color   高级   int   jvm   

转载自 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的操作保持原子型。

示例:

package com.util.concurrent.atomic;

import java.util.concurrent.atomic.AtomicLong;

public class AtomicLongTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        AtomicLong mAtoLong = new AtomicLong();
        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()81985529216486895
get()81985529216486895
intValue()-1985229329
longValue()81985529216486895
incrementAndGet()81985529216486896
getAndIncrement()81985529216486896
decrementAndGet()81985529216486896
getAndDecrement()81985529216486896
get()81985529216486895
addAndGet()81985529216486911
getAndAdd()81985529216486911
getAndSet()81985529216486927
compareAndSet()true
get()81985529216486893

 

Java高级特性系列--Concurrent

标签:code   port   reads   blog   子类   color   高级   int   jvm   

原文地址:http://www.cnblogs.com/IvySue/p/7470387.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!