线程间的通信 喜欢ヅ旅行 2022-01-29 10:34 289阅读 0赞 典型例子就是生产者-消费者模式,仓库为空时,消费者无法从仓库调动产品,只能wait,直到仓库有产品时被notify;仓库满了时,生产者则暂时停止生产(wait),直到仓库有空被notify。 仓库售货员类: package com.sy.iodemo; public class Clerk { private int product =0; public synchronized void addProduct(){ if(product >= 10){ try{ wait(); }catch(InterruptedException e){ e.printStackTrace(); } }else{ product++; System.out.println("生产者生产了第"+product+"个产品"); notifyAll(); } } public synchronized void getProduct(){ if(product <=0){ try{ wait(); }catch(InterruptedException e){ e.printStackTrace(); } }else{ System.out.println("消费者取走了第"+product+"个产品"); product--; notifyAll(); } } } 生产者类: package com.sy.iodemo; public class Productor implements Runnable{ Clerk clerk; public Productor(Clerk clerk){ this.clerk = clerk; } public void run(){ while(true){ try{ Thread.sleep(2000); }catch(InterruptedException e){ e.printStackTrace(); } clerk.addProduct(); } } } 消费者类: package com.sy.iodemo; public class Consumer implements Runnable{ Clerk clerk; public Consumer(Clerk clerk){ this.clerk = clerk; } public void run(){ while(true){ try{ Thread.sleep(2000); }catch(InterruptedException e){ e.printStackTrace(); } clerk.getProduct(); } } } 结果(部分): 生产者生产了第1个产品 生产者生产了第2个产品 消费者取走了第2个产品 生产者生产了第2个产品 消费者取走了第2个产品 生产者生产了第2个产品 消费者取走了第2个产品 生产者生产了第2个产品 消费者取走了第2个产品
相关 单线程间通信 多线程间通信 单线程间通信 <table> <thead> <tr> <th align="left">首先实现一个EventQueue,该Queue有如下三种状 朱雀/ 2024年03月16日 11:51/ 0 赞/ 91 阅读
相关 线程间的通信 1、什么是多线程之间通信 多个线程在处理同一个资源,并且任务不同时,需要线程通信来帮助解决线程之间对同一个变量的使用或操作。 于是我们引出了等待唤醒机制: 梦里梦外;/ 2023年10月05日 15:38/ 0 赞/ 18 阅读
相关 线程间通信 为什么需要线程通讯 线程是操作系统调度的最小单位,有自己的栈空间,可以按照既定的代码逐步的执行,但是如果每个线程间都孤立的运行,那就会造资源浪费。所以在现实中,我们需要这 心已赠人/ 2022年09月08日 00:12/ 0 赞/ 299 阅读
相关 线程间的通信 https://www.cnblogs.com/hapjin/p/5492619.html 通常可用把并行程序理解为一组相互独立的、能够发关和接收消息的组件,这也称为角 朱雀/ 2022年05月17日 03:00/ 0 赞/ 165 阅读
相关 线程间通信 线程和线程之间不是独立的个体,它们彼此之间可以互相通信和协作。 线程通信就是在线程之间传递信息,保证他们能够协同工作。在线程间进行通信后,系统之间的交互性会更强大,在大大提高 Myth丶恋晨/ 2022年05月17日 01:36/ 0 赞/ 304 阅读
相关 线程间通信 一、引言 线程与线程之间不是相互独立的存在,它们彼此之间需要相互通信和协作。最典型的例子就是生产者-消费者问题。下面首先介绍 wait/notify 机制,并对实现该机制 墨蓝/ 2022年04月11日 13:56/ 0 赞/ 336 阅读
相关 线程间通信 注意: 必须在同步方法中使用wait和notify方法,因为执行wait和notify的前提条件是必须持有同步方法(或块)的monitor的所有权,否则将会抛出异常 女爷i/ 2022年02月28日 09:33/ 0 赞/ 414 阅读
相关 线程间的通信 典型例子就是生产者-消费者模式,仓库为空时,消费者无法从仓库调动产品,只能wait,直到仓库有产品时被notify;仓库满了时,生产者则暂时停止生产(wait),直到仓库有空被 喜欢ヅ旅行/ 2022年01月29日 10:34/ 0 赞/ 290 阅读
相关 线程间通信 一、线程间通信 1. 需要三个重要的方法:(java.lang.Object包下) 三种方法使用之前一定要加锁 ①wait() ②n 缺乏、安全感/ 2021年09月28日 14:14/ 0 赞/ 419 阅读
还没有评论,来说两句吧...