关于生产消费模式
关于生产消费模式,其实就是两个线程之间共用一个对象,并对该对象进行编辑,从而达到线程之间的通信!
既然是生产消费模式,当然至少需要一个生产者,一个消费者,同时需要一个二者之间处理的对象啦!我们称呼这个对象为一个仓库,其中仓库需要两个方法,一个给生产者调用,一个给消费者,相当于生产者与消费者告诉仓库要干嘛了,然后仓库才去调用自身相应的方法;因此仓库的代码为:
package test.producer_consumer;
public class Pool {
public static int nums;
public static int max=5;
public synchronized void put() {
if (nums<max) {
nums++;
System.out.println(Thread.currentThread().toString()+"添加了--"+nums);
this.notifyAll();
}else {
System.out.println("已经装满了!");
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public synchronized void get() {
if (nums>0) {
System.out.println(Thread.currentThread().toString()+"取出了--"+nums);
nums--;
this.notifyAll();
}else {
System.out.println("已经不能再取了!");
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
接着就是生产者与消费者:他们都需要知道清楚他们去处理的仓库是哪个,因此我们需要在new生产消费者的时候需要传一个仓库的对象;
下面是生产消费的代码;
package test.producer_consumer;
public class Producer extends Thread{
public Pool pool;
Producer(){}
Producer(Pool p){this.pool=p;}
@Override
public void run() {
while (true) {
pool.put();
try {
sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
package test.producer_consumer;
public class Consumer extends Thread{
public Pool pool;
Consumer(){}
Consumer(Pool p){this.pool=p;}
@Override
public void run() {
while (true) {
pool.get();
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
运行代码:
package test.producer_consumer;
//生产消费者模式--关于多线程
public class Producer_Consumer {
public static void main(String[] args) {
Pool pool=new Pool();//仓库对象
Producer producer=new Producer(pool);//指定哪个仓库
Consumer consumer=new Consumer(pool);//指定哪个仓库
producer.start();
consumer.start();
}
}
这是上周六面试的一道算法题。。祝大家天天好心情!
分享到:
相关推荐
由于电商销售模式打破了传统柜台销售的局限,消费者可以足不出户地购买食品,这大大提升了购物的便捷性。随着市场渗透率的扩大,食品经销商的队伍也在不断壮大,互联网平台通过各种节日促销活动吸引消费者,提高了...
- 这项研究对于了解体育消费在居民生活中的地位、指导体育消费市场的生产和流通、以及推动体育产业的发展具有重要意义。通过对体育消费结构的深入理解,政策制定者和企业可以更准确地定位市场需求,提供更符合居民...
它基于互联网技术,利用大数据、人工智能等高级工具,对商品的生产、流通与销售过程进行改造升级,以满足消费者日益增长的个性化需求。这一模式不仅改变了消费者的购物体验,还重构了商业生态,促进了线上线下资源的...
本文详细探讨了我国猪肉市场在面临价格大幅波动时,养殖户和消费者面临的挑战,并提出了“保险+期货”模式作为解决生猪价格风险的一种创新手段。该模式的发展不仅为养殖户和消费者提供了风险规避的可能,也为整个...
生产者采用push模式将消息推送至broker,而消费者则通过pull模式从broker订阅并消费消息。Zookeeper在此中起到关键作用,负责管理集群配置、选举leader以及在消费者组变化时进行rebalance。 Kafka中的几个关键术语...
跨境电商是在电子商务快速发展的背景下衍生出来的一种商业模式,其主要通过不同国家的交易主体在互联网交易平台上的沟通与协调,实现在线交易、跨境物流配送,并达成跨境交易合作。跨境电商的主要特点包括快捷性、...
【标题】:“浅谈对工业与中国制造2025的理解” 【描述】:本文探讨了工业的概念,这是德国提出的制造业未来愿景,它预示着第四次工业革命的到来,基于信息物理融合系统(CPS)和高度数字化的生产模式。文章还提到...
优化生产流程,缩短交货周期,以适应电商环境下的快速变化;同时,合理预测和管理库存,降低资金占用。 最后,数据驱动的决策是电商运营的一大特色。通过对销售数据、用户行为数据的深度分析,品牌可以不断优化产品...
《浅谈对工业4.0与中国制造2025的理解》 工业4.0,源自德国的一项战略计划,旨在描绘制造业的未来愿景,它标志着第四次工业革命的到来。这次革命的核心是以信息物理融合系统(CPS)为基础,结合互联网、大数据、...
在生产者/消费者问题中,一个线程(生产者)生成数据,而另一个线程(消费者)处理这些数据。这种分解方式强调任务间的连接,优化数据传输,减少等待时间,从而提高并行性能。 并行编程的分解策略选择取决于具体的...
浅谈大数据技术及应用全文共5页,当前为第1页。浅谈大数据技术及应用全文共5页,当前为第1页。 浅谈大数据技术及应用全文共5页,当前为第1页。 浅谈大数据技术及应用全文共5页,当前为第1页。 浅谈大数据技术及应用...
浅谈基于电子商务环境下海南农产品供应链的模式毕业论文 本文通过对海南省农产品流通环节存在的问题进行分析,并提出基于电子商务环境下的海南农产品供应链整合模型。该模型通过将农产品的生产、加工、流通、消费等...
生鲜电商物流渠道下沉是指将电商物流配送体系从主要的城镇区域向农村地区拓展,旨在提升...生鲜电商物流下沉的成功实施将极大地促进农村地区的消费模式转变,提升农民的生活品质,并且推动整个生鲜电商行业的健康发展。
《玩具行业系列VI之商业模式:推本溯源浅谈我国中小玩具企业突围之路》这份报告深入探讨了中国中小玩具企业在面临激烈市场竞争时如何通过创新商业模式来实现突破性发展。以下是对该报告内容的详细解读。 首先,报告...
随着互联网营销和移动互联网的发展,传统商务模式正被电子商务和O2O取代,未来可能由分布式智能小型制造工厂直接响应消费者的定制化生产需求,彻底改变商品流通模式。 综上所述,工业4.0不仅是技术升级,更是生产...
Java线程中的生产者与消费者问题是多线程编程中一个经典的设计模式,它涉及到线程间的同步和通信。这个问题的核心是解决如何在一个有限容量的仓库(通常称为缓冲区)中,使得生产者线程和消费者线程能有效地协同工作...
《浅谈服装工厂的技术经济发展》 中国作为全球最大的服装生产和消费国,在加入世界贸易组织后,服装行业面临着前所未有的挑战和机遇。面对激烈的市场竞争,服装工厂必须不断改革和创新,以推动自身的技术经济发展。...
随着互联网、移动通信等新兴传播技术的快速发展,报纸读者的阅读习惯和新闻信息消费方式发生了深刻变化。传统的报业经营模式已经无法满足新的市场需求,这就催生了报业多元化经营动因的探讨以及“融合”模式的探索。...
综上所述,"浅谈物联网助力现代农业发展"的主题可能会详细讨论这些物联网技术如何改变传统农业模式,提升农业生产效率,以及面临的挑战和未来发展趋势。通过阅读“浅谈物联网助力现代农业发展.pdf”这份文档,我们...