主要通过wait()和notify()方法进行线程间的通讯

class Product extends Thread{String name;float price;boolean flag = false;}class Productor extends Thread{Product p;public Productor(Product p) {this.p = p;}int i = 0;@Overridepublic void run() {// TODO Auto-generated method stubsuper.run();while(true){synchronized(p){//通知生产者生产//p.notify();if(!p.flag){if(i%2 == 0){p.name = "苹果";try {Thread.sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}p.price = 4.5f;System.out.println("生产者生产了"+p.name+" 价格是"+p.price);}else{p.name ="香蕉";p.price = 2.5f;System.out.println("生产者生产了"+p.name+"  价格是"+p.price);}i++;p.flag = true;p.notify();}else{//生产了产品后等待消费者消费try {p.wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}}class Consumer extends Thread{Product p;public Consumer(Product p) {this.p = p;}@Overridepublic void run() {// TODO Auto-generated method stubsuper.run();while(true){synchronized(p){//通知启动消费者消费//p.notify();if(p.flag){System.out.println("消费者消费了"+p.name+"价格是"+p.price);p.flag = false;p.notify();}else{//消费了产品后等待生产者生产try {p.wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}

  

//main方法public static void main(String[] args) {Product p = new Product();Productor productor = new Productor(p);Consumer consumer = new Consumer(p);productor.start();consumer.start();}

  

转载于:https://www.cnblogs.com/it-life-nathan/p/6899783.html

java线程间的通讯相关推荐

  1. java 线程间的通讯(升级版)

    package com.chnsys.threaddemo;public class JavaResearch {/*** @param args* 模拟死锁**///等待唤醒机制/*1:input: ...

  2. java 线程类 通信_Java 中利用管道实现线程间的通讯

    在Java 语言中,提供了各种各样的输入输出流(stream),使我们能够很方便的对数据进行操作,其中,管道(pipe)流是一种特殊的流,用于在不同线程(threads)间直接传送数据.一个线程发送数 ...

  3. java线程间通讯的几种方式

    并发编程中,我们可能会遇到这样一个场景 A.B两个线程并行,但是我希望保证B线程在A线程执行完了后再执行 这个时候就需要线程间进行通讯 A执行完了后对B说一声,喂,我执行完了 来康康用Java怎么实现 ...

  4. java中的僵死进程_Java中线程间怎么通讯?什么叫僵死线程?

    <尸家保镖> <猛鬼出千> <不死心灵> <大家发财> <灵幻少女> <九天玄女> <僵尸至尊> <湘西尸王& ...

  5. Java线程间通信-回调的实现方式

    2019独角兽企业重金招聘Python工程师标准>>> Java线程间通信-回调的实现方式 Java线程间通信是非常复杂的问题的.线程间通信问题本质上是如何将与线程相关的变量或者对象 ...

  6. java线程间ThreadLocal的传递

    文章目录 1 场景 2 需确认问题 2.1 继承线程的ThreadLocal的含义 2.2 子线程内的ThreadLocal的值和父线程内的有什么关系? 2.3 父线程内的ThreadLocal清除后 ...

  7. java线程间通信的方式

    java线程间通信的方式 1. 共享变量 2. 等待/通知 3. 管道流 1. 共享变量 volatile修饰的变量,线程间可见,可使用这种变量作为线程间传递消息的媒介: 延伸出来的,还有redis中 ...

  8. java基础—线程间的通讯 生产者与消费者

    线程间的的通讯  生产者与消费者 public class TestDemos3 {public static void main(String[] args){Res r = new Res();I ...

  9. java线程间通信管道_通过管道进行线程间通信

    管道流(pipeStream)是一种特殊的流,用于在不同线程间直接传送数据.一个线程发送数据到输出管道,另一个线程从输入管道中读数据.通过管道,实现不同线程间的通信,而无须借助类似共享变量.临时文件之 ...

最新文章

  1. 2017 ACM ICPC Asia Shenyang Regional Contest 题解(10 / 13)【每日亿题2 / 16】
  2. 言有三文章 - AI系列完整阅读
  3. 用户研究,你还在“凭感觉”吗?
  4. 划重点!《企业数字化升级之路》白皮书讲了哪些干货?
  5. 摩托罗拉ex232java_摩托罗拉ex232r如何刷机?摩托罗拉ex232r评测
  6. 王道计算机组成原理 物理层整理 超详细版
  7. 软考高级论文如何“吹”
  8. python常用代码大全-Python常用库大全及简要说明
  9. linux内存管理_架构师必读:Linux 的内存分页管理
  10. 在php里怎么安装composer,怎么安装composer
  11. [你必须知道的异步编程]——基于任务的异步模式
  12. 提升SQLite数据插入效率低、速度慢的方法
  13. 开源 cocos2dx 五彩连珠.
  14. 基于UP30飞控系统的无人机地面站航线规划方法
  15. 计算机cad比例尺1 150,CAD图纸里面 1:50 和:1:100和1:150三个比例分别怎么换算...
  16. 说说基因组的垃圾DNA-Transposable elements
  17. 葛道辉,李洪升,张亮,等. 轻量级神经网络架构综述
  18. commitizen和cz-customizable配置git commit message
  19. python精通要数学好_深度学习需要多强的数学基础?
  20. 服务都微了,编排怎么整?

热门文章

  1. eclipse 工程复制
  2. frida hook so导出函数
  3. win8+ubuntu,ubuntu中打开NTFS文件
  4. QTP的那些事--通过WMI获取session中的用户信息的验证码
  5. Windows网络通信(二):socket异步编程
  6. Sql 某一字段统计
  7. LVS负载均衡之ipvsadm部署安装(安装篇)
  8. 2款不同样式的CSS3 Loading加载动画 附源码
  9. 食物日记:上海铁板烧
  10. 解读 2018 之运维篇:我们离高效智能的运维还有多远