原子类自增自减(一个有周期的固定范围值的 AtomicInteger)

复制代码
public class CircularAtomicInteger {
    private final int minValue;
    private final int maxValue;
    private final AtomicInteger atomicInteger;

    public CircularAtomicInteger(int initialValue, int minValue, int maxValue) {
        this.minValue = minValue;
        this.maxValue = maxValue;
        this.atomicInteger = new AtomicInteger(initialValue);
    }
    

    /**
     * 自增
     * @return
     */
    public int incrementAndGet() {
        int currentValue;
        int updatedValue;
        do {
            currentValue = atomicInteger.get();
            updatedValue = currentValue >= maxValue ? minValue : currentValue + 1;
        } while (!atomicInteger.compareAndSet(currentValue, updatedValue));
        return updatedValue;
    }

    /**
     * 自减
     * @return
     */
    public int decrementAndGet() {
        int currentValue;
        int updatedValue;
        do {
            currentValue = atomicInteger.get();
            updatedValue = currentValue <= minValue ? maxValue : currentValue - 1;
        } while (!atomicInteger.compareAndSet(currentValue, updatedValue));
        return updatedValue;
    }
}
复制代码

 

posted @   每月工资一万八  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示