java中多线程通信实例:生产者消费者模式

线程间的通信:

其实就是多个线程再操作同一个资源,但是操作的动作不同

 

当某个线程进入synchronized块后,共享数据的状态不一定满足该线程的需要,需要其他线程改变共享数据的状态后才能运行,而由于当时线程对共享资源时独占的,它必须解除对共享资源的锁定的状态,通知其他线程可以使用该共享资源。

Java中的 wait(),notify(),notifyAll()可以实现线程间的通信。

生产者--消费者问题是典型的线程同步和通信问题

/**
 *
生产者和消费者问题,生产者生成出产品,消费者去购买产品
 * 在这里创建三个线程,一个主控线程,一个生产者线程,一个消费者线程,
 *
另外,创建一个堆栈 Stack,生成线程生成的产品放置到堆栈中,然后消费者线程再堆栈中去走产品
 *
*/

建立一个堆栈
代码如下:


 

 创建一个生产者类
代码如下:


 创建一个消费者类
代码如下:


 主函数调用
代码如下:

java中多线程通信实例:生产者消费者模式

时间: 2024-10-22 03:25:53

java中多线程通信实例:生产者消费者模式的相关文章

java中多线程的实例代码

今天开始学习java中的多线程,在看书的过程中写了一个实例来练习多线程的用法,下面把代码放到博文里,里面很多的注释,可以帮助理解.     运行结果如下: main:启动MessageLoop线程...main:等待MessageLoop线程结束...main:继续等待.main:继续等待.main:继续等待.main:继续等待.Thread-0:消息1main:继续等待.main:继续等待.main:继续等待.main:继续等待.Thread-0:消息2main:继续等待.main:继续等待.

java 多线程 22 :生产者/消费者模式 进阶 利用await()/signal()实现

java多线程15 :wait()和notify() 的生产者/消费者模式 在这一章已经实现了  wait/notify 生产消费模型 利用await()/signal()实现生产者和消费者模型 一样,先定义一个缓冲区: public class ValueObject { public static String value = ""; } 换种写法,生产和消费方法放在一个类里面: public class ThreadDomain41 extends ReentrantLock {

11.9-全栈Java笔记: 线程并发协作(生产者/消费者模式)

多线程环境下,我们经常需要多个线程的并发和协作.这个时候,就需要了解一个重要的多线程并发协作模型"生产者消费者模式". 什么是生产者? 生产者指的是负责生产数据的模块(这里模块可能是:方法.对象.线程.进程). 什么是消费者? 消费者指的是负责处理数据的模块(这里模块可能是:方法.对象.线程.进程). 什么是缓冲区? 消费者不能直接使用生产者的数据,它们之间有个"缓冲区".生产者将生产好的数据放入"缓冲区",消费者从"缓冲区"

java中的多线程的实现生产者消费者模式

public class TestAccount { public static void main(String[] args) { Account account = new Account(); account.setAccount("116854398"); account.setBalance(10); Thread t1 = new Wife(account, TestAccount.class); Thread t2 = new Husband(account, Test

Java中多线程通信怎么实现

线程通信的方式: 1.共享变量 线程间通信可以通过发送信号,发送信号的一个简单方式是在共享对象的变量里设置信号值.线程A在一个同步块里设置boolean型成员变量hasDataToProcess为true,线程B也在同步代码块里读取hasDataToProcess这个成员变量.这个简单的例子使用了一个持有信号的对象,并提供了set和get方法. public class MySignal1 { //共享的变量 private boolean hasDataToProcess = false; /

生产者消费者模式的java实现(实现三)

Exchanger是java.util.concurrent类库下的一个并发工具.下面是java api文档里对Exchanger的描述. A synchronization point at which threads can pair and swap elements within pairs. Each thread presents some object on entry to the exchange method, matches with a partner thread, a

Java多线程-同步:synchronized 和线程通信:生产者消费者模式

大家伙周末愉快,小乐又来给大家献上技术大餐.上次是说到了Java多线程的创建和状态|乐字节,接下来,我们再来接着说Java多线程-同步:synchronized 和线程通信:生产者消费者模式. 一.同步:synchronized 多个线程同时访问一个对象,可能造成非线程安全,数据可能错误,所谓同步:就是控制多个线程同时访就是控制多线程操作同一个对象时,注意是同一个对象,数据的准确性, 确保数据安全,但是加入同步后因为需要等待,所以效率相对低下. 如:一个苹果,自己一个人去咬怎么都不会出问题,但是

Java多线程编程4--Lock的实例--实现生产者/消费者模式:一对一、多对多交替打印

1.实现生产者/消费者模式:一对一交替打印 public class MyService { private ReentrantLock lock= new ReentrantLock(); private Condition condition = lock.newCondition(); private boolean hasValue = false; public void set() { try{ lock.lock(); while (hasValue == true) { cond

java 多线程并发系列之 生产者消费者模式的两种实现

在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题.该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度. 为什么要使用生产者和消费者模式 在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程.在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据.同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者.为了解决这种生产消费能力不均衡的问题,所以便有了生产者和消费者模式. 什么是生