Java商品管理系统应用多线程

文章介绍了如何在Java中通过多线程实现商品交替卖出的功能,通过创建GoodsSaleThread类并使用synchronized关键字保证线程安全,防止并发问题。示例展示了三个线程分别销售电视机、洗衣机和冰箱,保证了销售的有序性。
摘要由CSDN通过智能技术生成


前言

Java是一门广泛应用于商业应用程序开发的编程语言,而商品管理系统则是商业应用程序中常见的一种类型。在商品管理系统中,实现商品交替卖出的功能是非常重要的。本文将介绍如何通过使用Java多线程来实现商品交替卖出的功能。


一、使用多线程实现商品交替卖出

public class GoodsSaleThread extends Thread {
    private String goodsName; //商品名称
    private int totalNum; //商品总数
    private int saleNum; //已售出商品数
    public GoodsSaleThread(String goodsName, int totalNum) {
        this.goodsName = goodsName;
        this.totalNum = totalNum;
        this.saleNum = 0;
    }
    public void run() {
        while (saleNum < totalNum) { //只要还有商品未售出
            synchronized (this) { //使用synchronized关键字保证同步
                if (saleNum < totalNum) { //只有还有商品未售出才执行下面的代码
                    System.out.println(Thread.currentThread().getName() + "售出" + goodsName + "第" + (saleNum + 1) + "件"); //输出售出的商品信息
                    saleNum++; //已售出商品数加1
                }
            }
        }
    }
}

在这个示例代码中,我们定义了一个GoodsSaleThread类,它继承自Thread类。这个类中包含了商品名称、商品总数和已售出商品数等属性,以及一个run()方法。在run()方法中,我们使用synchronized关键字来保证多个线程之间的互斥访问,以避免同时有多个线程购买同一个商品的情况。

运行结果

Thread-0售出电视机第1Thread-2售出冰箱第1Thread-1售出洗衣机第1Thread-0售出电视机第2Thread-2售出冰箱第2Thread-1售出洗衣机第2Thread-0售出电视机第3Thread-2售出冰箱第3Thread-1售出洗衣机第3Thread-0售出电视机第4Thread-2售出冰箱第4Thread-1售出洗衣机第4Thread-0售出电视机第5Thread-2售出冰箱第5Thread-1售出洗衣机第5Thread-0售出电视机第6Thread-2售出冰箱第6Thread-1售出洗衣机第6Thread-0售出电视机第7Thread-2售出冰箱第7Thread-1售出洗衣机第7Thread-0售出电视机第8Thread-2售出冰箱第8Thread-1售出洗衣机第8Thread-0售出电视机第9Thread-2售出冰箱第9Thread-1售出洗衣机第9Thread-2售出冰箱第10Thread-1售出洗衣机第10Thread-2售出冰箱第11Thread-1售出洗衣机第11Thread-2售出冰箱第12Thread-1售出洗衣机第12Thread-2售出冰箱第13Thread-1售出洗衣机第13Thread-2售出冰箱第14Thread-1售出洗衣机第14

GoodsSaleThread类

下面是一个使用GoodsSaleThread类的示例代码:

public class GoodsManager {
    public static void main(String[] args) {
        GoodsSaleThread goods1 = new GoodsSaleThread("电视机", 10);
        GoodsSaleThread goods2 = new GoodsSaleThread("洗衣机", 15);
        GoodsSaleThread goods3 = new GoodsSaleThread("冰箱", 20);
        goods1.start();//启动卖电视机的线程
        goods2.start();//启动卖洗衣机的线程
        goods3.start();//启动卖冰箱的线程
    }
}

在这个示例代码中,我们创建了三个GoodsSaleThread对象,分别用于卖出10台电视机、15台洗衣机和20台冰箱。然后,我们调用start()方法来启动这三个线程,从而实现商品交替卖出的功能。每个线程输出的结果可能会有所不同,因为线程的执行顺序是不确定的。


总结

总之,通过使用Java多线程来实现商品交替卖出的功能是非常简单的。我们只需要定义一个继承自Thread类的类,然后在这个类中使用synchronized关键字来保证多个线程之间的互斥访问即可。通过这种方式,我们可以确保商品的销售是有序的,从而避免了同时有多个用户购买同一个商品的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值