Java通过Atomic类完成库存扣减

2023-12-15 10:32:51
package io.github.jast90;

import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;

public class HelloCAS {

	public static void main(String[] args) {
		AtomicInteger atomicInteger = new AtomicInteger(10);
		ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(10, 10, 0, TimeUnit.SECONDS,
				new LinkedBlockingQueue<Runnable>(100));
		for (int i = 0; i < 100; i++) {
			threadPoolExecutor.submit(new Runnable() {

				@Override
				public void run() {
					order(atomicInteger);
				}
			});
		}

		threadPoolExecutor.shutdown();
		while (true) {
			if (threadPoolExecutor.isShutdown()) {
				break;
			}
		}
	}

	public static boolean reduceStock(AtomicInteger atomicInteger) {
		int reduce = atomicInteger.getAndAdd(-1);
		if (reduce > 0) {
			System.out.println("库存充足:" + reduce);
			return true;
		} else {
			System.out.println("库存不足");
			return false;
		}
	}
	
	public static void order(AtomicInteger atomicInteger) {
		if(reduceStock(atomicInteger)) {
			System.out.println("生成订单");
		}
	}
}
库存充足:9
库存充足:3
生成订单
生成订单
库存充足:6
库存充足:7
生成订单
库存充足:5
生成订单
库存充足:4
生成订单
库存充足:8
生成订单
库存充足:10
生成订单
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存充足:1
生成订单
生成订单
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存充足:2
生成订单
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足
库存不足


文章来源:https://blog.csdn.net/jastzhang/article/details/134943782
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。