qcode
  • 创作工场专业版,一问多答!更智能、更完整、更原创
  • 这是一个超强内容创作平台,它会写文章、做设计、绘图、敲代码,有问必答!
🔥点击使用-高级专业版🔥

用java 设计一个秒杀系统,200件商品,同时10000人抢,每个人只能抢一件,相关代码请贴出

时间2023-03-24 18:48:02 提问来自 广东省深圳市 的网友 分类创作 浏览302
1.定义商品类,记录商品库存量,以及抢购人数 2.定义秒杀类,初始化200个商品对象,提供一个抢购的方法 3.定义10000个用户线程,在run方法中进行抢购 ```java public class Goods { // 库存量 private int stock; // 抢购人数 private int buyCount; public Goods(int stock){ this.stock = stock; this.buyCount = 0; // 初始化时未有人抢购 设为0 } public synchronized void reduceStock(){ // 同步方法保证原子性 防止多人同时修改库存量 造成错误的情况出现 if(stock > 0){ // 如果库存大于0 才能进行减少库存的动作 stock--; // 减少库存量 每一件物品只能有一个用户进行够买 buyCount++; // 每当有一件物品出去时 这件次数加1 用于之后的判断是否所有物品都已经卖光了 System.out.println("剩余" + stock + "件"); // 测试使用 用来显示剩余多少件物品 看看是否都卖光了 }else{ // 如果店面已全部卖光了 进行执行相关逻辑处理 (此处省略) System.out.println("已全部卖光"); // 测试使用 用来显示是否都卖光了 看看是否都卖光了 } } public class Seckill { /*定义一个Seckill对象*/ /*初始化200个Goods对象*/ /*并把Goods对象装入List中*/ List<Goods> list = new ArrayList<>(); for(int i=0 ; i<200 ; i++){ Goods goods = new Goods(1); list.add(goods); } /*声明10000个UserThread对象*/ UserThread[] userThreads = new UserThread[10000]; for (int j=0 ; j<userThreads.length ; j++){ userThreads[j] = new UserThread(list); } /*遍历userthread数组并开始执行*/ for (UserThread user : userThreads) { user .start(); }}public class UserThead extends Thread{ private List<Goods> list; public UserThead(){} public UserThead(List<Goods> list){this .list=list;} @Override public void run() { synchronized (list) { Iterator iterator=list .iterator(); while (iterator .hasNext()) { Goods goods=(Goods) iterator .next(); goods .reduceStock(); if (goods .getBuyCount() == 200) {//如果所有物品已全都卖出 break; } }} }}

点击这里,进行内容创作

创作工场 免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!

上一篇 设计一个秒杀系统,200件商品,同时10000人抢,每个人只能抢一件 下一篇 创新创业计划书