`
lingangw
  • 浏览: 10815 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

produce and consume多线程实例

阅读更多
class Test {

    public static void main(String[] args) {

        Queue q = new Queue();

        Producer p = new Producer(q);

        Consumer c = new Consumer(q);

        p.start();

        c.start();

    }

}

  
class Producer extends Thread {

    Queue q;

    Producer(Queue q) {

        this.q = q;

    }

    public void run() {

        for (int i = 0; i < 10; i++) {

            q.put(i);

            System.out.println("Producer put " + i);

        }

    }

}

   
class Consumer extends Thread {

    Queue q;

    Consumer(Queue q) {

        this.q = q;

    }

  
    public void run() {

        while (true) {

            System.out.println("Consumer get " + q.get());

        }

    }

}

  
class Queue {

    int value;

    boolean bFull = false;

    public synchronized void put(int i) {

        if (!bFull) {

            value = i;

            bFull = true;

            notify();

        }

        try {

            wait();

        } catch (Exception e) {

            e.printStackTrace();

        }

  
    }

  
    public synchronized int get() {

        if (!bFull) {

            try {

                wait();

            } catch (Exception e) {

                e.printStackTrace();

            }

        }

        bFull = false;

        notify();

        return value;

    }

}

 

分享到:
评论

相关推荐

    多线程实例,关于生产者与消费者的问题

    在编程领域,多线程是一种常见且重要的技术,特别是在C++这样的高级编程语言中。"生产者-消费者问题"是多线程编程中一个经典的同步问题,它涉及到资源的共享和线程间的协作。这个问题的核心在于如何有效地协调生产者...

    C++多线程编程总结,实例讲解[汇编].pdf

    例子中的`task_queue_t`类展示了如何实现一个任务队列,其中`produce()`方法添加任务,`consume()`方法处理任务,使用了互斥锁和条件变量确保线程安全。 3. 任务队列 任务队列是一种有效地组织和调度并发任务的方法...

    java多线程实现生产者消费者关系

    在Java编程中,多线程是并发处理任务的关键技术,它可以极大地提高程序的执行效率。在实际应用中,我们常常会遇到一种典型的多线程问题——生产者消费者模型。这个模型描述了两种类型的线程:生产者线程负责创建或...

    实现多线程之间通讯第二节

    在Java编程语言中,多线程是并发执行的程序组件,它们可以共享资源并相互协作完成复杂的任务。在多线程环境下,线程间的通信至关重要,以确保数据的一致性和程序的正确性。本节主要讲解如何使用`wait()`和`notify()`...

    C#多线程教程.doc

    C#多线程教程 在计算机编程中,尤其是在性能需求较高的场景下,多线程技术是不可或缺的一部分。本文将深入探讨C#中的多线程,包括相关概念、如何操纵线程以及生产者和消费者模式的应用。 一、多线程的概念 1. **...

    C++多线程编程总结,实例讲解.pdf

    根据提供的文件内容,我们可以总结出C++多线程编程相关的知识点。首先,需要纠正一些OCR扫描错误,比如将“voidtask_queue_t::produce”误识别为“voidtask_queue_t::produce”,并将其修正为“void task_queue_t::...

    C++-多线程编程总结-实例讲解.doc

    # C++多线程编程总结及实例讲解 在C++程序开发过程中,为了提升程序的吞吐量、并发性和实时响应能力,采用多线程技术是常见且有效的手段之一。本文将围绕“C++-多线程编程总结-实例讲解”这一主题,深入探讨多线程...

    QT的多线程程序设计.docx

    QT的多线程程序设计是QT框架中一种重要的特性,它允许开发者创建高效的并发应用程序,充分利用多核处理器的计算能力,提高程序的响应速度。在QT中,有三种主要方式来实现多线程:平台无关的线程类、线程安全的事件...

    java多线程设计wait[参考].pdf

    在这个例子中,`produce()`和`consume()`方法都使用`synchronized`关键字,确保在任何时候只有一个线程执行。当缓冲区满或空时,相应的方法会调用`wait()`让线程等待,当缓冲区状态改变时,通过`notifyAll()`唤醒...

    汪文君高并发编程实战视频资源下载.txt

    │ 高并发编程第二阶段31讲、多线程Producer and Consumer设计模式.mp4 │ 高并发编程第二阶段32讲、多线程Count Down设计模式.mp4 │ 高并发编程第二阶段33讲、多线程Thread-Per-Message设计模式.mp4 │ 高并发...

    java多线程_消费者与生产者模型

    在Java多线程编程中,消费者-生产者模型是一种经典的线程间通信模式,用于解决多线程环境下的数据共享问题。该模型涉及到两个主要的角色:生产者(Producer)和消费者(Consumer)。生产者负责创建数据,而消费者则...

    java多线程中生产者与消费者问题.pdf

    【Java多线程中的生产者与消费者问题】 在Java编程中,多线程是一个关键特性,它允许多个任务在同一个程序中并发执行。在实际应用中,常常会出现一类问题,即生产者与消费者问题,这是一个典型的并发控制问题。在这...

    java线程Thread的实例

    本实例将深入探讨`Thread`类的使用,这对于初学者掌握多线程编程至关重要。 在Java中,创建线程主要有两种方式:继承`Thread`类和实现`Runnable`接口。当一个类直接继承`Thread`类时,可以直接重写其`run()`方法来...

    C#线程同步ManualResetEvent

    在这个例子中,`Produce`方法代表生产者,`Consume`方法代表消费者。通过`ManualResetEvent`的`Set()`和`WaitOne()`方法,我们可以控制生产者和消费者的执行顺序,实现线程间的同步。 **四、使用场景** 1. 控制线程...

    python 条件同步的使用 条件同步:threading.Condition 多线程同步,python2例程

    在多线程编程中,数据同步是确保程序正确执行的关键。当多个线程需要访问并可能修改同一份共享数据时,如果没有适当的同步机制,可能会导致数据不一致或死锁等问题。Python 提供了 `threading.Condition` 类来帮助...

    多线程的每种实现!!!!

    ### 多线程的实现方式及其应用场景 #### 1. **Thread 类** - **定义**:`Thread` 类是 Java 提供的一个内置类,用于创建线程。通过继承 `Thread` 类并重写 `run()` 方法来实现多线程。 - **示例**: ```java ...

    汪文君高并发编程实战视频资源全集

    │ 高并发编程第二阶段31讲、多线程Producer and Consumer设计模式.mp4 │ 高并发编程第二阶段32讲、多线程Count Down设计模式.mp4 │ 高并发编程第二阶段33讲、多线程Thread-Per-Message设计模式.mp4 │ 高并发...

    线程通信安全问题

    在Java编程中,多线程通信是一个至关重要的概念,特别是在并发编程中,它涉及到线程间的协作和数据共享。线程通信安全问题是指在多线程环境下,如何保证多个线程对共享资源进行访问时的正确性和一致性。在这个场景下...

    Java多线程之线程通信生产者消费者模式及等待唤醒机制代码详解

    Java多线程之线程通信生产者消费者模式及等待唤醒机制代码详解 该篇文章主要介绍了Java多线程之线程通信生产者消费者模式及等待唤醒机制代码详解,通过对生产者消费者模式的编程实现和等待唤醒机制的应用,阐述了多...

    python并发编程之多进程、多线程、异步和协程详解

    Python并发编程是提升程序效率的重要手段,涉及到的关键概念有多进程、多线程、异步以及协程。这里我们将深入探讨这些概念。 首先,多线程(Multithreading)允许在一个进程中创建多个执行线程,使得多个任务可以...

Global site tag (gtag.js) - Google Analytics