Java 多线程抢红包

问题需求

一个人在群里发了1个100元的红包,被分成了8个,群里有10个人一起来抢红包,有抢到的金额随机分配。

红包功能需要满足哪些具体规则呢?

1、被分的人数抢到的金额之和要等于红包金额,不能多也不能少。

2、每个人至少抢到1元。

3、要保证红包拆分的金额尽可能分布均衡,不要出现两极分化太严重的情况。

使用线程的同步,红包100元就是资源共享!!

java 复制代码
public class TestRedPacket {
    public static void main(String[] args) {
        //用户名
        List<String> list = Arrays.asList("张三", "刘芳", "李飞", "王芳", "陈风", "方涛", "房名", "王霞", "安利", "田园");

        //5个线程
        for (int i = 0; i < 10; i++) {
            MyThread1 my = new MyThread1(list.get(i));
            //启动
            my.start();
        }
    }
}

class MyThread1 extends Thread {
    private static int money = 100;  //总金额
    private static int count = 8;   //个数

    public MyThread1(String name) {
        super(name);
    }

    @Override
    public void run() {
        //同步
        synchronized (MyThread1.class) {
            int prize = 0;
            if (count == 0) {
                System.out.println(getName() + "- 没抢到!");
            } else { //最后一个
                if (count == 1) {
                    prize = money;
                } else { //随机
                    Random r = new Random();
                    //随机范围:[1,m/n×2-1]
                    //二倍均值法
                    int bounds = (money / count) * 2 - 1;
                    prize = r.nextInt(bounds) + 1;
                }
                money -= prize;
                count--;
                System.out.println(getName() + "- 抢到【" + prize + "】元!");
            }
        }
    }
}
相关推荐
临床数据科学和人工智能兴趣组31 分钟前
正则表达式的基础语法的基本符号
开发语言·人工智能·python·正则表达式·r语言·r语言-4.2.1·workbudyy
王中阳Go35 分钟前
Go 后端转 AI:非科班怎么补?一张 3 列路线表(可保存)
开发语言·人工智能·后端·python·golang·大语言模型
SL_staff41 分钟前
运维救火实录:钉钉考勤API变更引发工资计算异常,我们用JVS-Logic可视化逻辑引擎实现分钟级热修复
java·mysql·全栈
SunnyDays10111 小时前
Java 查找并高亮 Word 文字:精确查找及正则表达式模糊查找
java·查找文字·word 文档·高亮文字·正则匹配查找·模糊查找
geats人山人海1 小时前
java 4继承
java·开发语言
aqiu1111111 小时前
【C++算法打怪专栏】C++ `unordered_set` 常用初始化与插入方法总结
开发语言·c++·算法
众链网络1 小时前
Agent 的成本大头不在“写“,在“判断“:拆解专用决策模型的三层架构
java·开发语言·人工智能·微服务
周小董1 小时前
[1371]jdk管理工具
java·开发语言
Terra.K1 小时前
高精度阶乘求和模板深度解析
开发语言·c++·算法
Hum8le2 小时前
漏洞知识点《php伪协议》
开发语言·安全·web安全·php