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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!