Java多线程练习(6)

news/2024/9/23 5:17:24/

        MultiProcessingExercise6

java">package MultiProcessingExercise620240813;import java.util.ArrayList;
import java.util.Collections;public class MultiProcessingExercise6 {public static void main(String[] args) {// 需求:// 每次抽的过程中,不打印,抽完时一次性打印(随机)// 在此次抽奖过程中,抽奖箱1总共产生了6个奖项。// 分别为:10,20,100,500,2,300最高奖项为300元,总计额为932元// 在此次抽奖过程中,抽奖箱2总共产生了6个奖项。// 分别为:5,50,200,800,80,700最高奖项为800元,总计额为1835元ArrayList<Integer> pool = new ArrayList<>();// 加入无奖for (int i = 0; i < 500; i++) {pool.add(0);}// 加入奖项Collections.addAll(pool, 10,5,20,50,100,200,500,800,2,80,300,700);Lottery lottery = new Lottery(pool);Thread thread1 = new Thread(lottery, "抽奖箱1");Thread thread2 = new Thread(lottery, "抽奖箱2");thread1.setPriority(5);thread2.setPriority(6);thread1.start();thread2.start();}
}

        Lottery

java">package MultiProcessingExercise620240813;import java.util.ArrayList;
import java.util.Collections;
import java.util.concurrent.locks.ReentrantLock;public class Lottery implements Runnable {private ArrayList<Integer> pool;public Lottery(ArrayList<Integer> pool) {this.pool = pool;}private final ReentrantLock lock = new ReentrantLock();private ArrayList<Integer> list1 = new ArrayList<>();private ArrayList<Integer> list2 = new ArrayList<>();@Overridepublic void run() {while (true) {lock.lock();if (pool.isEmpty()) {// 此时抽奖箱已经空了,停止抽奖,开始输出每个抽奖箱的结果if ("抽奖箱1".equals(Thread.currentThread().getName())) {System.out.println("抽奖箱1:" + list1);} else {System.out.println("抽奖箱2:" + list2);}lock.unlock();break;} else {// 此时抽奖箱不空,继续抽奖try {Thread.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}try {Collections.shuffle(pool);int prize = pool.removeFirst();if ("抽奖箱1".equals(Thread.currentThread().getName())) {if (prize != 0) {list1.add(prize);}} else {if (prize != 0) {list2.add(prize);}}} finally {lock.unlock();}}}}
}

 


http://www.ppmy.cn/news/1508930.html

相关文章

基于微信小程序的心理测评平台设计与实现

基于微信小程序的心理测评平台设计与实现 Design and Implementation of a Psychological Assessment Platform based on WeChat Mini Program 完整下载链接:基于微信小程序的心理测评平台设计与实现 文章目录 基于微信小程序的心理测评平台设计与实现摘要第一章 引言1.1 研究…

服务端渲染(SSR)在现代网站开发中的地位与应用

目录 服务端渲染的概念 服务端渲染的优势 1. 提升首屏加载速度 2. 有利于搜索引擎优化&#xff08;SEO&#xff09; 3. 改善用户体验 服务端渲染的局限性 1. 服务器负载 2. 开发复杂性 3. 延迟更新 现代应用案例 技术实现 SSR的工作流程 SSR与其他技术的比较 客户…

Leetcode面试经典150题-236.二叉树的最低公共祖先

解法都在代码里&#xff0c;不懂就留言或者私信 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val x; }* }*/ class Solution {/**题目分析&#xff1a;本题是经典的二…

spring过滤器和拦截器的区别

1出身不同。 过滤器来自servlet&#xff0c;拦截器来自spring框架。 2触发时机 不同请求的执行顺序是&#xff1a;请求进入容器 > 进入过滤器 > 进入 Servlet > 进入拦截器 > 执行控制器 过滤器先执行&#xff0c;会在servlet请求之前和相应之后进行处理。 拦…

自助创建 1Panel 应用

自助创建 1Panel 应用 前言 1Panel 作为一款开源的 Linux 服务器运维管理面板&#xff0c;其优质的 应用商店 想必也是很多人喜爱它的原因&#xff0c;除了官方的 应用列表 &#xff0c;开源社区内也涌现出了许多优质的第三方应用商店资源&#xff0c;比如 okxlin/appstore 等…

Regularization in ML:简述机器学习中的正则化

一. 在机器学习&#xff08;ML&#xff09;中&#xff0c;正则化是什么&#xff1f; • 正则化是一种解决机器学习中过拟合问题的方法。 • 过拟合的模型无法对测试数据做出良好的泛化估计。 • 当潜在的学习模型具有低偏差/高方差特征&#xff0c;或者当我们只有少量的数据时…

AI秘境-墨小黑奇遇记 - 修炼成神经(二)

在解开了感知机和门电路的谜题后&#xff0c;墨小黑对人工智能的世界渐渐产生了浓厚的兴趣。他开始意识到&#xff0c;自己不仅是在学习一门复杂的技术&#xff0c;更是在探索一个充满未知与挑战的神秘领域。 入夜&#xff0c;墨小黑一脸无奈地盯着电脑屏幕&#xff0c;思考着自…

快速上手Spring Boot

快速上手Spring Boot (qq.com)