问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java多生产者-多消费者问题(+高分哦!)

发布网友 发布时间:2022-04-30 03:35

我来回答

1个回答

热心网友 时间:2022-04-10 00:02

生产者向阻塞队列中放入随即整数(可以为两个消费者提供不同的队列),消费者从队列中取出元素进行判断,可以用BlockingQueue实现同步,很方便,质数和平方数判断在写个静态方法即可~自己想想看,需要代码就说下
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

public class Procer extends Thread
{
private List<BlockingQueue<Integer>> queueList;

public Procer(List<BlockingQueue<Integer>> bQueueList)
{
this.queueList = bQueueList;
}

public void run()
{
int count = 0;
while (count++ < 10)
{
int randomInt = (int) (Math.random() * 100 + 1);
try
{
for(BlockingQueue<Integer> queue:queueList)
{
queue.put(randomInt);
}
System.out.println(randomInt + " is put..");
}
catch (InterruptedException e)
{
Thread.currentThread().interrupt();
}
}
}

public static void main(String[] args)
{
BlockingQueue<Integer> bQueue = new LinkedBlockingQueue<Integer>();
BlockingQueue<Integer> bQueueCopy = new LinkedBlockingQueue<Integer>();
List<BlockingQueue<Integer>> list=new ArrayList<BlockingQueue<Integer>>();
list.add(bQueue);
list.add(bQueueCopy);
new Procer(list).start();
new Procer(list).start();
new Procer(list).start();
new PrimeConsumer(bQueue).start();
new SquareConsumer(bQueueCopy).start();
}
}

class PrimeConsumer extends Thread
{
private BlockingQueue queue;

public PrimeConsumer(BlockingQueue<Integer> bQueue)
{
this.queue = bQueue;
}

public void run()
{
do
{
try
{
int i = (Integer) queue.take();
if (CheckNumber.isPrime(i))
{
System.out.println(i + " is prime..");
}
}
catch (InterruptedException e)
{
Thread.currentThread().interrupt();
}
}
while (queue.size() != 0);
}
}

class SquareConsumer extends Thread
{
private BlockingQueue queue;

public SquareConsumer(BlockingQueue<Integer> bQueue)
{
this.queue = bQueue;
}

public void run()
{
do
{
try
{
int i = (Integer) queue.take();
if (CheckNumber.isSquare(i))
{
System.out.println(i + " is square..");
}
}
catch (InterruptedException e)
{
Thread.currentThread().interrupt();
}
}
while (queue.size() != 0);
}
}

class CheckNumber
{
public static boolean isPrime(int n)
{
if (n == 1)
return false;
for (int i = 2; i < n / 2 + 1; i++)
{
if (n % i == 0)
{
return false;
}
}
return true;
}

public static boolean isSquare(int n)
{
int l = (int) Math.sqrt(n);
for (int i = 1; i <= l; i++)
{
if (i * i == n)
{
return true;
}
}
return false;
}
}
都写在一个类里了,比较乱,测试正确~
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
发摅解释 摅的组词有哪些 摅字能组哪些词 检测电脑配置的软件电脑硬件检测权威软件有哪几个 查看电脑参数的软件什么软件可以全面检测显示出电脑硬件参数数据_百度... 有没有可以查自己电脑配置的软件啊??? 芯片程序解密哪家好 ...文章怎么突然间阅读量开始大减,从几百掉到个位数。 百家号怎么才个位数播放量?个位数播放量怎么算? 保本收益投资合法吗 java实现生产者消费者问题 在下面的注释处补充代码 急用 java 生产者与消费者 的简单问题 关于Java多线程实现生产者和消费者的问题 java 多线程 生产者-消费者问题 JAVA多生产者多消费者问题。希望用wait()和notify().谢谢! JAVA生产者,消费者问题? 生产者消费者模式 java为什么要用while &#x2022; 利用java多线程及同步机制实现生产者-消费者模型 我写的java生产者和消费者模式为什么会报异常呢 Java线程生产者消费者问题 求Java大神。。 多线程编程。 编写生产者|消费 诸君,求yanmu的下载地址。 java中关于消费者和生产者的问题? 看看下面这张图片出自哪部动漫。。。 Java线程生产者与消费者 学习unity的发展前景咋样? java中哪些类可以快速的编写生产者消费者模型 东方小镇的艳姆合集的解压密码是多少?求大神说下。 java Thread生产者与消费者模型 艳姆动漫哪里可以看 找长沙中南大学升华公寓美团外卖的自提点 下爱奇艺全网影视下载 为什么爱奇艺全网影视上找到电影的简介和预告片,却没有片源? 爱奇艺视频和爱奇艺全网影视那个好用 医院能刷信用卡吗 爱奇艺全网独播的电视剧《河神》好看吗? 医院信用卡能用吗 家有娇妻(共20集)-全集在线观看–电视剧-爱奇艺全网影视 一般医院能刷信用卡吗 蜡笔小新新番(更新至845集)-全集在线观看–动漫-爱奇艺全网影视 深圳市中医院付款能不能用信用卡 笔记本散热器对电脑的效果如何 笔记本散热器有效果吗? 笔记本电脑散热器效果如何?能否有效的降低CPU及显卡的温度? 笔记本散热器效果好吗,能起到降温作用吗? 笔记本散热器作用大吗?能降多少度? 笔记本电脑散热器效果到底如何? 国外房地产信息系统发展现状。 房地产管理信息系统的解决方案 如何加强房地产信息化建设