packageorg.lx.multithreading ;classInfo//定义信息类{privateString name="罗星";//定义name属性privateString content="JAVA初学者";//定义content属性privatebooleanflag=false;//设置标志位publicsynchronizedvoidset(String name, String content){if(!flag){//方法每次执行的时候都检查一下标志位状态,从而判断时候进行生产try{super.wait() ;

}catch(InterruptedException e){

e.printStackTrace() ;

}

}this.setName(name) ;//设置名称try{

Thread.sleep(300) ;

}catch(InterruptedException e){

e.printStackTrace() ;

}this.setContent(content) ;//设置内容flag=false;//改变标志位,表示可以取走super.notify() ;//唤醒线程}publicsynchronizedvoidget(){if(flag){方法每次执行的时候都检查一下标志位状态,从而判断时候进行取出try{super.wait() ;

}catch(InterruptedException e){

e.printStackTrace() ;

}

}try{

Thread.sleep(300) ;

}catch(InterruptedException e){

e.printStackTrace() ;

}

System.out.println(this.getName()+"-->"+this.getContent()) ;

flag=true;//改变标志位,表示可以生成super.notify() ;

}publicvoidsetName(String name){this.name=name ;

}publicString getName(){returnthis.name ;

}publicvoidsetContent(String content){this.content=content ;

}publicString getContent(){returnthis.content ;

}

}classProducerimplementsRunnable//通过Runnable实现多线程{publicInfo info=null;//保存Info引用publicProducer(Info info){this.info=info ;

}publicvoidrun(){booleanflag=false;//定义标记位for(inti=0; i<50; i++){if(flag){this.info.set("罗星","JAVA初学者") ;

flag=false;

}else{this.info.set("Solitary","Coder") ;

flag=true;

}

}

}

} ;classConsumerimplementsRunnable{//消费者类privateInfo info=null;publicConsumer(Info info){this.info=info ;

}publicvoidrun(){for(inti=0; i<50; i++){this.info.get() ;

}

}

} ;//测试代码publicclassMultiThreading

{publicstaticvoidmain(String[] args){

Info info=newInfo() ;//实例化Info对象Producer pro=newProducer(info) ;//生产者Consumer con=newConsumer(info) ;//消费者newThread(pro).start() ;newThread(con).start() ;

}

}

java进程生产者消费者_生产者与消费者(多线程经典案例)相关推荐

  1. 【全栈之路】JAVA基础课程四_生产者消费者问题(20190614v1.1)

    欢迎进入JAVA基础课程 博客地址:https://segmentfault.com/a/1190000019482921 本系列文章将主要针对JAVA一些基础知识点进行讲解,为平时归纳所总结,不管是 ...

  2. 查看java进程占用内存_如何查看java进程大批占用内存

    如何查看java进程大量占用内存 你好,方法如下: 可以直接使用top命令后,查看%MEM的内容.可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令: ...

  3. java 进程 线程数量_如何查询一个进程下面的线程数(进程和线程区别)

    在平时工作中,经常会听到应用程序的进程和线程的概念,那么它们两个之间究竟有什么关系或不同呢? 一.对比进程和线程 1)两者概念 -  进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程 ...

  4. [RabbitMQ]创建Java开发环境_消费者_生产者

    我们将用 Java 编写两个程序.发送单个消息的生产者和接收消息并打印出来的消费者.我们将介绍 Java API 中的一些细节. 在下图中," P"是我们的生产者," C ...

  5. python多线程实现生产者消费者_用Python实现多线程“生产者-消费者”模型的简单例子...

    用 Python 实现多线程"生产者 - 消费者"模型的简单例子 生产者消费者问题是一个著名的线程同步问题, 该问题描述如下: 有一个生产者在生产产品, 这些产品将提供给若干个消费 ...

  6. python queue 生产者 消费者_生产者、消费者模型---Queue类

    queue队列在几乎每种编程语言都会有,python的列表隐藏的一个特点就是一个后进先出(lifo)队列.而本文所讨论的queue是python标准库queue中的一个类.它的原理与列表相似,但是先进 ...

  7. 查看 java 进程线程数_查看指定进程的线程数

    先查出进程id,然后从下面命令行执行结果查看线程数: cat /proc/{进程id}/status 得出结果: ··· Name: java State: S (sleeping) Tgid: 94 ...

  8. java 进程被杀_我的进程去哪儿了,谁杀了我的进程

    曾经在我眼前,却又消失不见,这是今天的第六遍. 一段感情,我们希望它能够天长不久,越稳定越好,最怕的就是中途夭折,无疾而终. 即使不能到海枯石烂的一天,我们也希望好聚好散,大家理智的告别,然后笑着活下 ...

  9. java 线程的理解_浅谈对多线程的理解(一)

    今天我们先来聊聊有关线程的话题...... 一. 线程概述 1. 简单区分程序.进程和线程 程序是指一段静态的代码 进程是指正在执行的程序,将静态的代码运行起来 线程是指正在执行程序的小单元 举个栗子 ...

最新文章

  1. 记录Mask RCNN调整预测网格 font大小
  2. rust怎么放篝火_如何为你的露营活动搭建一个持久温暖的篝火
  3. linux设置mysql定时任务_原创 Linux下实现Mysql定时任务备份数据
  4. python100个必背知识-学Python必背的初级单词,你都背了吗?
  5. readonly 和 disable的区别
  6. linux shell 域名 ip,Shell脚本一种检查Linux中域名和IP地址所有权信息、检查多个域名的到期日期工具...
  7. Docker安装influxDB
  8. Node版本管理nvm的用法
  9. Java核心知识点学习----多线程中的阻塞队列,ArrayBlockingQueue介绍
  10. Tabular Editor学习笔记_3:警告标志及解决办法
  11. 从零开始学编程_数据结构
  12. jQuery实现鼠标滑过图片放大效果
  13. 教你如何攻克Kotlin中泛型型变的难点(下篇)
  14. 图片的质量压缩和二次采样
  15. 企业的财务部门为什么要用内网即时通讯软件
  16. docker容器IP的设置
  17. Excel2007 不能清除剪贴板
  18. Python绘图:使用Basemap绘制全球地形图
  19. 【书籍翻译笔记】Next Generation Wireless LANs 802.11n and 802.11ac: Chapter1
  20. eLife(IF:8.713)发表武汉大学逯杨/苏畅团队白念珠菌半乳糖代谢信号通路分子机制

热门文章

  1. Nginx学习总结(13)——Nginx 重要知识点回顾
  2. 互联网高并发架构的8种设计模式演化
  3. python企业微信特定用户_python3调用企业微信api!开发一款属于自己的企业微信...
  4. fetch 函数分装
  5. 《Python编程快速上手——让繁琐工作自动化》——2.5 控制流的元素
  6. PHP -- Traits新特性
  7. window10 安装出现the error code is 2503错误的解决方法
  8. HashMap源码分析(转载)
  9. 一台服务器多个oracle启动
  10. photoshop cs3 字体 即时预览