package com.hidata.hiops.paas.demo;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Random;
/**
* @Description :
* @Date: 2023-10-08 11:32
*/
public class RedPacket extends Thread{
//共享数据
//100块,分成了3个红包
static BigDecimal money = BigDecimal.valueOf(100.0);//红包总金额
static int count = 3;//红包个数
//最小的中奖金额
static final BigDecimal MIN = BigDecimal.valueOf(0.01);
@Override
public void run() {
synchronized (RedPacket.class){
if (count == 0){
//表示红包已经抢完了
System.out.println(getName() + " 没有抢到红包 !" );
}else{
//定义一个变量,表示中奖的金额
BigDecimal prize;
if(count == 1){
//表示此时是最后一个红包
//就无需随机,剩余的钱都是中奖金额
prize = money;
}else{
//获取抽奖范围
//随机的金额范围 99.98 0.01 0.01
double bonds = money.subtract(BigDecimal.valueOf(count-1)).multiply(MIN).doubleValue();
Random r = new Random();
//表示第一次,第二次(随机)
prize = BigDecimal.valueOf(r.nextDouble() * bonds + 0.0001);
}
//小数点保留两位,四舍五入
prize = prize.setScale(2, RoundingMode.HALF_UP);
//从money中,去掉当前中奖的金额
money = money.subtract(prize);
//红包个数-1
count--;
//本次红包的信息进行打印
System.out.println(getName() + " 抢到了 " + prize + " 元");
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
抢红包程序:基于java+多线程实现的抢红包程序完整源码分享给需要的同学
共4个文件
java:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 177 浏览量
2024-11-12
11:35:42
上传
评论
收藏 5KB ZIP 举报
温馨提示
在Java编程领域,多线程技术是实现并发执行任务的关键,尤其在开发高并发应用时,如本例中的“抢红包”程序。本程序利用Java的多线程特性,模拟了现实生活中多人同时抢红包的场景。以下是这个抢红包程序涉及的一些核心知识点: 1. **线程**:在Java中,线程是程序执行的最小单位,每个线程代表程序中的一个独立执行流。通过创建和启动多个线程,可以实现多任务并行处理。在抢红包的场景中,每个参与抢红包的人都对应一个线程。 2. **多线程实现**:Java提供了多种创建线程的方式,如继承`Thread`类或实现`Runnable`接口。在本例中,可能会选择实现`Runnable`接口,因为这样可以避免单继承的限制,增加代码的灵活性。 3. **同步机制**:在并发环境中,为了防止多个线程对同一资源的不正确访问,Java提供了多种同步机制,如`synchronized`关键字、`Lock`接口(如`ReentrantLock`)等。在抢红包程序中,确保红包分配的公平性和准确性至关重要,因此必须对红包分配的代码进行同步。 4. **并发控制**:`wait()`、`notify()`和`n
资源推荐
资源详情
资源评论
收起资源包目录
qiosdaofas2323usdfsd.zip (4个子文件)
qiosdaofas2323usdfsd
qinaghsotboa2323
v2.0版本 (对红包金额做了处理)
TestRedPacket.java 653B
RedPacket.java 2KB
v1.0版本
TestRedPacket.java 653B
RedPacket.java 2KB
共 4 条
- 1
资源评论
程序猿小D
- 粉丝: 4068
- 资源: 757
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功