public class HwService {
public static Map<Integer, HwAward> awardMap = new HashMap<Integer, HwAward>();
public static Object lock = new Object(); //锁
public static int[] awardIndexs = null; //奖品索引
/**
* 重新生成奖品索引数组
*
* @return
*/
private int[] regenerateAwardIndexs() {
Set<Integer> keys = HwService.awardMap.keySet();
int seedCount = keys.size();// 当前因子个数
int[] awardIndexs = new int[seedCount];
int count = 0;
for (int j : keys) {
awardIndexs[count] = j;
count++;
}
return awardIndexs;
}
}
public static void main(String[] args) {
Runnable r = new Runnable() {
public void run() {
HwService service = new HwService();
Random ran = new Random();
int i = 0;
while (i < 150000) {
int seedCount = HwService.awardMap.size();// 当前种子个数
if (seedCount == 0) {
System.out.println("发光了!!!!!");
break;
}
HwAward award = HwService.awardMap.get(awardIndexs[ran
.nextInt(seedCount)]);// 根据当前因子个数随机
synchronized (lock) {
int nowLeft = award.getLeftAmount() - 1; // 当前剩余个数-1
award.setLeftAmount(nowLeft); // 更新剩余个数
if (nowLeft == 0) {
HwService.awardMap.remove(award.getAwardId()); // 从奖品列表移除
awardIndexs = service.regenerateAwardIndexs(); // 重新生成因子
System.out.println(award.getAwardBreif()
+ " 发光了!!! ID " + award.getAwardId());
System.out.println("当前奖品列表个数 "
+ HwService.awardMap.size());
}
}
i++;
}
System.out.println("当前还有 " + i + " 人未领奖");
}
};
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
Thread t3 = new Thread(r);
Thread t4 = new Thread(r);
Thread t5 = new Thread(r);
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
}
备忘,缺点是要先确定按比例算出的总数,然后减到0的就不会出现在随机队列里面了
分享到:
相关推荐
小学数学数学故事数学童话北游记29悟空发奖
* 规则:循环赛制,原则上按国际篮球比赛规则 * 奖励:取前三名 第二部分:个人和团体乒乓球赛 * 负责人:程光新吴发平 * 时间:11月-12月 * 要求:以个人自愿原则到各年级负责人处报名 * 规则:原则上按国际乒乓...
学校学生奖学金大作业的程序,这是自己写的,不完善之处请见谅
系统支持多种抽奖玩法策略的创建、参与、记账和发奖逻辑,适用于电商、外卖、出行、公众号运营等各类场景。 ## 项目的主要特性和功能 ### 1. 抽奖活动管理 活动创建与配置支持创建不同类型的抽奖活动,包括活动...
这是NJ的奖学金一题的代码,相信能够为很多学生(特别是中大林老师的)带来便利。
培训记录和随机员工访谈是检查培训效果的重要手段。 5. **商品订货与到货管理**:DM商品的订货率应在促销开始前达到100%,并且各组需有制式订单和到货情况跟踪,以确保商品供应充足。 6. **商品陈列**:DM清单上的...
用JAVA实现彩票管理系统 机体功能体现为 : 购买彩票、发奖,兑奖
偶然所得,如单张有奖发票奖金超过一定额度,会被视为“偶然所得”并按20%的比例税率征收个人所得税,且由发奖单位代扣代缴。 总的来说,个人所得税是一个复杂且多方面的主题,它涉及到不同类型的个人所得、税率...
用户可以通过特定的酒精类型进行搜索,查找非酒精饮料列表或生成随机的饮料配方。 使用 Love Calculator,还会根据用户的姓名输入向用户显示兼容性百分比。 用户还可以将他们最喜欢的饮品配方保存到已保存的饮品...
省分客服部依据积分成本与消耗比例原则制定全省统一的抽奖方案,经过财务、市场、信息化等部门会签后执行。市分则按照省分方案开展活动,并进行相应宣传。 4. **积分抽奖业务咨询与投诉处理**: - 咨询:通过营业...
Constants.java: 定义了系统中使用的各种常量,包括响应码、全局属性、缓存Key、决策树节点类型、规则限定类型、活动状态、抽奖策略模式、中奖状态、发奖状态、奖品类型、Ids生成策略枚举、活动单使用状态、发奖...
拍摄新闻照片时,需要随时注意,首先找好最佳拍摄位置和角度,然后等特色场景出现时马上就按下快门,例如需要抓住领导握手、会场鼓掌、发奖接奖状、船舶靠岸、蓝球进圈、比赛开始、举酒碰杯、交换签字文本、剪彩下...
- **中国象棋赛**:通过抽签分成上、下半区,进行淘汰赛,根据参赛人数决定决赛名额,最终进行循环赛,决出前几名发奖。 - **扑克牌赛**:具体规则未详细说明,但会有比赛时间和地点。 5. **娱乐项目**: - **...
Token Generator 使用SDK访问好视通云通信平台服务需要使用Token,该项目提供生成Token的Java语言代码。 关于Token鉴权的具体细节,参考 使用方式 你应该在服务器程序中使用对应的代码生成Token,将Token下发给...
这些信息有助于企业初步了解求职者的个人信息,同时也有助于符合某些特定岗位的要求,例如性别比例、年龄限制等。 2. **教育经历**:这部分要求求职者填写起止年月、毕业院校、专业以及在学习期间所任职务。这有助...
5. 举行发奖仪式,播放进行曲,邀请冠军发言。 6. 评价活动,表扬积极参与的幼儿,鼓励持续努力。 【活动反思】 活动中,幼儿积极参与,表现出强烈的集体荣誉感,平时较为安静的幼儿也展现出积极的一面。幼儿自信地...
- 例如,在《给老师发奖》的例子中,学生为何要给老师颁奖,以及他们的心情和想法,都需要通过想象力来补充。 3. **围绕中心展开叙述,突出重点**: - 文章的结构应清晰,先概述,再详述,确保突出能体现中心思想...
7. **几何图形面积比**:"的面积与的面积之比",需要计算不同几何图形的面积,可能用到相似三角形、比例定理等。 8. **二项式定理**:二项式展开式中,所有有理项的系数之和,涉及二项式定理的应用,计算特定项的...
2. **工作量完成**:考核员工是否能按质按量完成工作任务,包括基本任务和额外任务。完成大半任务到超额完成,评价等级从1分至4分不等,反映出员工的工作效率和积极性。 3. **工作时效性管理**:强调员工能否按时...