Java 代码示例:如何防止超卖
以下是一个简单的 Java 代码示例,可用于防止超卖:
public class Product {
private int stock;
public Product(int stock) {
this.stock = stock;
}
public synchronized boolean sell(int quantity) {
if (quantity <= stock) {
stock -= quantity;
return true;
} else {
return false;
}
}
public int getStock() {
return stock;
}
}
该代码中,'Product' 类表示一个商品,具有库存属性 'stock' 和 'sell' 方法,用于销售商品。'sell' 方法使用 'synchronized' 关键字进行同步,以确保在多线程环境中不会发生超卖现象。
在 'sell' 方法中,如果请求的数量小于或等于库存量,则将库存量减少相应的数量,并返回 'true' 表示销售成功。如果请求的数量大于库存量,则返回 'false' 表示销售失败。
使用该代码,可以创建一个 'Product' 对象并调用 'sell' 方法来销售商品,如下所示:
Product product = new Product(10); // 创建一个库存为 10 的商品对象
if (product.sell(5)) {
System.out.println("销售成功,库存剩余:" + product.getStock());
} else {
System.out.println("销售失败,库存不足");
}
在多线程环境中,多个线程可以同时尝试销售商品,但由于 'sell' 方法使用 'synchronized' 关键字进行同步,只有一个线程能够获得锁并执行销售操作,其他线程将被阻塞,直到锁被释放。这样可以避免超卖现象的发生。
原文地址: https://www.cveoy.top/t/topic/nILI 著作权归作者所有。请勿转载和采集!