java多线程之-CAS无锁-常见API

package com.ldp.demo06Atomic;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * @author 姿势帝-博客园
 * @address https://www.cnblogs.com/newAndHui/
 * @WeChat 851298348
 * @create 02/16 9:15
 * @description
 * 原子整数
 * JUC 并发包提供了:
 * AtomicBoolean
 * AtomicInteger
 * AtomicLong
 *
 */
public class Test01 {
    public static void main(String[] args) {
        AtomicInteger i = new AtomicInteger(10);
        // 1.

        System.out.println("i=" + i.get() + ",执行i.getAndIncrement(),结果为:" + i.getAndIncrement() + ",实际i=" + i.get());
        System.out.println("i=" + i.get() + ",执行i.incrementAndGet(),结果为:" + i.incrementAndGet() + ",实际i=" + i.get());
        // 2.

        System.out.println("i=" + i.get() + ",执行i.getAndDecrement(),结果为:" + i.getAndDecrement() + ",实际i=" + i.get());
        System.out.println("i=" + i.get() + ",执行i.decrementAndGet(),结果为:" + i.decrementAndGet() + ",实际i=" + i.get());
        // 3.

        System.out.println("i=" + i.get() + ",执行i.getAndAdd(10),结果为:" + i.getAndAdd(10) + ",实际i=" + i.get());
        System.out.println("i=" + i.get() + ",执行i.addAndGet(10),结果为:" + i.addAndGet(10) + ",实际i=" + i.get());
        //4. P表示i的值
        System.out.println("i=" + i.get() + ",执行i.getAndUpdate(p -> p - 2),结果为:" + i.getAndUpdate(p -> p - 2) + ",实际i=" + i.get());
        System.out.println("i=" + i.get() + ",执行i.updateAndGet(p -> p - 2),结果为:" + i.updateAndGet(p -> p - 2) + ",实际i=" + i.get());
        //5. P表示原来的值i , X表示修改的值10
        System.out.println("i=" + i.get() + ",执行i.getAndAccumulate(10, (p, x) -> p + x),结果为:" + i.getAndAccumulate(10, (p, x) -> p + x) + ",实际i=" + i.get());
        System.out.println("i=" + i.get() + ",执行i.accumulateAndGet(10, (p, x) -> p + x),结果为:" + i.accumulateAndGet(10, (p, x) -> p + x) + ",实际i=" + i.get());
        /**
         * 测试执行结果
         * i=10,执行i.getAndIncrement(),结果为:10,实际i=11
         * i=11,执行i.incrementAndGet(),结果为:12,实际i=12
         * i=12,执行i.getAndDecrement(),结果为:12,实际i=11
         * i=11,执行i.decrementAndGet(),结果为:10,实际i=10
         * i=10,执行i.getAndAdd(10),结果为:10,实际i=20
         * i=20,执行i.addAndGet(10),结果为:30,实际i=30
         * i=30,执行i.getAndUpdate(p -> p - 2),结果为:30,实际i=28
         * i=28,执行i.updateAndGet(p -> p - 2),结果为:26,实际i=26
         * i=26,执行i.getAndAccumulate(10, (p, x) -> p + x),结果为:26,实际i=36
         * i=36,执行i.accumulateAndGet(10, (p, x) -> p + x),结果为:46,实际i=46
         */
    }
}

Original: https://www.cnblogs.com/newAndHui/p/15912150.html
Author: 李东平|一线码农
Title: java多线程之-CAS无锁-常见API

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/604464/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球