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/
转载文章受原作者版权保护。转载请注明原作者出处!