目录
1.资源
2.消费者
3.生产者
4.测试
首页 Java java教程 Java中消费者问题的代码分析

Java中消费者问题的代码分析

Sep 11, 2018 pm 02:05 PM
消费者 生产者

本篇文章给大家带来的内容是关于Java中消费者问题的代码分析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1.资源

public class Resource {
    //当前资源的数量
    int num = 0;
    //当前资源的上限
    int size = 10;

    //消费资源
    public synchronized void remove() {
        //如果num为0,没有资源了,需要等待
        while (num == 0) {
            try {
                System.out.println("消费者进入等待");
                this.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        //如果线程可以执行到这里,说明资源里有资源可以消费
        num--;
        System.out.println("消费者线程为:" + Thread.currentThread().getName() + "--资源数量:" + num);
        this.notifyAll();
    }

    //生产资源
    public synchronized void put() {
        //如果资源满了,就进入阻塞状态
        while (num == size) {
            try {
                System.out.println("生产者进入等待");
                this.wait();

            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        num++;
        System.out.println("生产者线程为:" + Thread.currentThread().getName() + "--资源数量:" + num);
        this.notifyAll();
    }
}
登录后复制

2.消费者

public class Consumer implements Runnable {

    private Resource resource;

    public Consumer(Resource resource) {
        this.resource = resource;
    }

    @Override
    public void run() {
        while (true){
            resource.remove();
        }

    }
}
登录后复制

3.生产者

public class Producer implements Runnable {

    private Resource resource;

    public Producer(Resource resource){
        this.resource=resource;
    }

    @Override
    public void run() {
        while (true){
            resource.put();
        }
    }
}
登录后复制

4.测试

public class TestConsumerAndProducer {

    public static void main(String[] args) {
        Resource resource = new Resource();
        //生产线程
        Producer p1 = new Producer(resource);
        //消费线程
        Consumer c1 = new Consumer(resource);

        new Thread(p1).start();

        new Thread(c1).start();
    }
}
登录后复制

20180911135448646.png

 相关推荐:

关于java生产者与消费者的实例详解

java多线程之并发协作生产者消费者设计模式

以上是Java中消费者问题的代码分析的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

阿里二面:RocketMQ 消费者拉取一批消息,其中部分消费失败了,偏移量怎样更新? 阿里二面:RocketMQ 消费者拉取一批消息,其中部分消费失败了,偏移量怎样更新? Apr 12, 2023 pm 11:28 PM

大家好,我是君哥。最近有读者参加面试时被问了一个问题,如果消费者拉取了一批消息,比如 100 条,第 100 条消息消费成功了,但是第 50 条消费失败,偏移量会怎样更新?就着这个问题,今天来聊一下,如果一批消息有消费失败的情况时,偏移量怎么保存。1 拉取消息1.1 封装拉取请求以 RocketMQ 推模式为例,RocketMQ 消费者启动代码如下:public static void main(String[] args) throws InterruptedException, MQClie

队列的生产者与消费者模式在PHP与MySQL中的实现方法 队列的生产者与消费者模式在PHP与MySQL中的实现方法 Oct 15, 2023 pm 02:33 PM

队列的生产者与消费者模式在PHP与MySQL中的实现方法随着互联网业务的快速发展,系统中处理大量任务的需求变得越来越迫切。队列是一种常见的解决方案,可以高效地处理任务。队列的生产者-消费者模式(Producer-ConsumerPattern)在PHP和MySQL中的实现方法是一种常见的解决方案,本文将介绍具体的实现方法,并提供代码示例。生产者-消费者模式

生产者-消费者问题及其在C++中的实现 生产者-消费者问题及其在C++中的实现 Sep 17, 2023 pm 11:09 PM

并发计算中普遍存在的同步挑战被称为生产者-消费者问题。鉴于多个线程或进程旨在在访问共享源时协调各自的操作;这个问题需要复杂的沟通任务以及平衡的执行程序。今天的讨论将有助于理解这一困难背后的概念,同时认识到它在当代计算机科学框架中的重要性-特别是在C++实现实践中。理解生产者-消费者问题定义和目的解决生产者-消费者问题带来的挑战的解决方案来自于明确划分负责生产和使用信息的人员之间的责任。当生产者自行生成新记录时,消费者通过同步他们的操作来确保它们被正确使用。人们必须小心避免竞争条件或死锁等问题,如

高通骁龙4代2亮相 高通骁龙4代2亮相 Jun 28, 2023 am 08:02 AM

高通推出了其最新的移动平台高通骁龙4Gen2,这款新的处理器和平台专为价值智能手机而设计,我们可以期待在2023年下半年看到它用于智能手机。高通技术公司宣布推出新的Snapdragon4Gen2移动平台,该平台经过创造性设计,为全球更多消费者提供令人难以置信的移动体验。骁龙4Gen2提供轻松的全天使用,具有快速的CPU速度、清晰的摄影和摄像,以及快速的5G和Wi-Fi以实现可靠的连接。®“骁龙-其核心-正在推动创新,同时满足OEM和更广泛行业的需求,”高通技术公司产品管理总监MatthewLop

Smart精灵#1 Pulse心动版购车权益揭秘,盛情奉献消费者福利! Smart精灵#1 Pulse心动版购车权益揭秘,盛情奉献消费者福利! Aug 21, 2023 pm 05:13 PM

Smart官方今日发布了全新的Smart精灵#1Pulse心动版权益调整公告,为消费者提供了更多购车福利。根据公告,在2023年8月16日至8月31日期间购买Smart精灵#1Pulse心动版的消费者将享受一系列丰厚的购车权益,这不仅为爱车者提供了更多实惠,还进一步提升了Smart精灵#1Pulse心动版的市场吸引力据了解,新的购车权益调整方案包括多个福利,其中之一是车辆尾款抵扣权益。购车者可以在尾款中享受高达1万元的抵扣,减轻了一部分经济压力。此外,官方还提供了免费升级权益,包括密友氛围组套装

调查显示:消费者对人工智能数据使用产生冲突 调查显示:消费者对人工智能数据使用产生冲突 Apr 18, 2023 pm 02:01 PM

思科的一项新的调查显示,消费者支持人工智能,但担心企业如何使用这项技术,超过一半的受访者表示,由于使用人工智能,他们对组织失去了信任。这些数据在思科的2022年消费者隐私调查中披露,该调查是对消费者对数据隐私的看法和行为的年度全球审查。今年的调查强调了进一步提高透明度的必要性,因为消费者表示,他们的首要任务是让组织在如何使用个人数据方面更加透明。思科的调查还显示,虽然消费者支持人工智能(54%的人愿意分享他们的匿名数据以改进人工智能产品),但65%的人因使用人工智能而失去了对组织的信任。“企业

'遥遥领先”:消费者送锦旗表达对华为的喜爱 '遥遥领先”:消费者送锦旗表达对华为的喜爱 Sep 07, 2023 pm 01:21 PM

9月5日消息,华为最新的旗舰手机系列——华为Mate60系列,在中文互联网世界引起了轰动。这一系列的手机不仅在市场上备受瞩目,而且在消费者心中赢得了高度的喜爱和尊敬。近日,华为门店开始销售Mate60系列,各地的消费者纷纷涌入门店,排起了长队。一位热情的消费者甚至送了一面锦旗给华为手机旗舰店,上面写着“遥遥领先”,这是对华为在逆境中突破和创新的崇敬之情。据小编了解,9月3日,华为Mate60Pro在线上线下全面开售,几乎在京东、天猫、华为商城等多个线上渠道瞬间被抢购一空。华为官网上显示,Mate

移动端接收投诉,'全国消协智慧 315 平台”微信小程序经营者端上线 移动端接收投诉,'全国消协智慧 315 平台”微信小程序经营者端上线 Jul 02, 2024 pm 06:45 PM

本站7月2日消息,《中华人民共和国消费者权益保护法实施条例》自7月1日起施行。本站从中国消费者协会官网获悉,中国消费者协会开发了“全国消协智慧315平台”(简称“消协315”)平台的微信小程序经营者端,并于7月1日起上线运行。中国消费者协会表示,“消协315”经营者端有如下功能:通过微信搜索“消协315”小程序,轻松入驻平台实现移动端接收消费者投诉支持移动端在线分办、在线和解、经营者管理等多项功能“消协315”平台于2024年3月15日上线试运行。截至2024年6月底,共有1.7万余家经营者入驻

See all articles