1.一个商品

2.一个工厂 包含仓库  、出售 生产的方法

3.两个生产者两个销售者商品数量在1-100之间徘徊

生产商品(面包)类

public class MianBao {private String name;//名称private String color;//颜色private double price;//价格public MianBao() {// TODO Auto-generated constructor stub}public MianBao(String name, String color, double price) {super();this.name = name;this.color = color;this.price = price;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}@Overridepublic String toString() {return "MianBao [name=" + name + ", color=" + color + ", price=" + price + "]";}}

工厂类

public class GongChang {//定义一个仓库 专门放面包的工厂Vector<MianBao> vec=new Vector<>();/*** 生产面包的方法* @param mb 对象* @throws Exception 父类异常*/public synchronized void addMianBao(MianBao mb) throws Exception {if(vec.size()>99) {//库存大于99就挂起this.wait();}else {//小于等于99//继续生产vec.add(mb);this.notifyAll();//唤醒挂起System.out.println(Thread.currentThread().getName()+"生产第"+vec.size()+"个面包");}}/*** 销售的方法* @throws Exception 父类异常*/public synchronized void deleteMianBao() throws Exception {if(vec.size()<1) {//库存面包小于1就挂起this.wait();}else {vec.remove(0);//否则就继续销售this.notifyAll();//唤醒挂起System.out.println(Thread.currentThread().getName()+"销售第"+vec.size()+"个面包");}}

生产者类

public class ShengChan implements Runnable{//定义一个仓库private GongChang gc;public ShengChan(GongChang gc) {this.gc=gc;//赋值}@Overridepublic void run() {while(true) {try {gc.addMianBao(new MianBao("哈士奇", "黄色", 99.89));} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}

销售者类

public class XiaoShou implements Runnable{//定义一个仓库private GongChang gc;public XiaoShou(GongChang gc) {this.gc=gc;}@Overridepublic void run() {while(true) {try {gc.deleteMianBao();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}

测试类

public class Test {public static void main(String[] args) {//一个工厂GongChang gc=new GongChang();//销售者XiaoShou xs=new XiaoShou(gc);new Thread(xs).start();new Thread(xs).start();//生产者ShengChan sc=new ShengChan(gc);new Thread(sc).start();new Thread(sc).start();}}


Thread多线程-(最容易被问到的面试题)相关推荐

  1. Python threading Thread多线程的使用方法

    Python threading Thread多线程的使用方法 参考资料:<Python 多线程>http://www.runoob.com/python/python-multithre ...

  2. C++11新特性以及std::thread多线程编程

    一 .C++11新特性 1. auto 类型推导 1.1 当=号右边的表达式是一个引用类型时,auto会把引用抛弃,直接推导出原始类型: 1.2 当=号右边的表达式带有const属性时,auto不会使 ...

  3. ros中使用boost::thread多线程boost::bind绑定参数,多线程发送topic

    ros中使用boost::thread多线程boost::bind绑定参数 #include <boost/thread/thread.hpp> bool running;//虚拟墙 vo ...

  4. 偷偷学习Java,然后惊艳所有人 JavaSE总结 - thread多线程

    零基础学Java,肝了bilibili的6百多集JavaSE教程传送门的学习笔记!!! 下面博客分为三部分: ① thread多线程的要点(想快速了解thread多线程的小伙伴选择,内容较多,快也快不 ...

  5. Java程序员开发三年,去网易社招,竟被问到这些面试题

    本文转载自:Java程序员开发三年,去网易社招,竟被问到这些面试题 前言 前几天偶遇老同学,聊了聊工作:老同学和我分享了这次网易社招的面试题:文中篇幅有限,就和大家分享这么多:更多Java后端开发面试 ...

  6. java 实体类包含list 怎么取值_舅舅是面试官,偷偷告诉你们面试官最爱问的Java面试题...

    2015 年,因为工作岗位的变动,舅舅开始负责给集团招聘一些技术人员,出于对公司的负责,也为了更好的胜任技术经理的职位,在面试的这件事上,舅舅做了大量的"功课",首先研究了几乎所有 ...

  7. 面试官都会问的Mybatis面试题,你会这样回答吗?

    一.概述 面试,难还是不难?取决于面试者的底蕴(气场+技能).心态和认知及沟通技巧.面试其实可以理解为一场聊天和谈判,在这过程中有心理.思想上的碰撞和博弈.其实你只需要搞清楚一个逻辑:"面试 ...

  8. 最常问的MySQL面试题集合

    除了基础题部分,本文还收集整理的MySQL面试题还包括如下知识点或题型: MySQL高性能索引 SQL语句 MySQL查询优化 MySQL高扩展高可用 MySQL安全性 问题1:char.varcha ...

  9. 企业面试题|最常问的MySQL面试题集合(二)

    MySQL的关联查询语句 六种关联查询 交叉连接(CROSS JOIN) 内连接(INNER JOIN) 外连接(LEFT JOIN/RIGHT JOIN) 联合查询(UNION与UNION ALL) ...

  10. 企业面试题|最常问的MySQL面试题集合(一)

    问题1:char.varchar的区别是什么? varchar是变长而char的长度是固定的.如果你的内容是固定大小的,你会得到更好的性能. 问题2: TRUNCATE和DELETE的区别是什么? D ...

最新文章

  1. Redis之七种武器
  2. sphinx+coreseek创建中文分词索引
  3. mongodb 查询 mysql_MongoDB 基本查询使用
  4. NFS的简单配置和使用
  5. python旋转矩阵_python实现回旋矩阵方式(旋转矩阵)
  6. 只运行一个实例的方法
  7. 如何使一维数组一行一行的输出成二维数组的格式
  8. 小程序 省市区县三级联动选择器(caseCade)
  9. POJ-1651 Multiplication Puzzle 矩阵连乘问题(区间dp)
  10. 2023年中国AI论文影响力超越美国?
  11. 面向对象7:项目二的总结
  12. Aittit rpc的实现协议 JSON-RPC XML-RPC . Ws协议webservice 目录 1. XML-RPC协议 1 1.1. JSON-RPC远程调用协议 - CieloSun
  13. 内存颗粒和闪存颗粒的区别_slc、mlc、tlc闪存芯片颗粒哪个好?有什么区别?
  14. 医保结余7600亿匮
  15. python3使用staf问题_python调用staf自动化框架的方法
  16. java四大名著知乎_《西游记》是否被高估了?四大名著该如何排名?
  17. 使用pandas对excel表格筛选
  18. Ubuntu下编译VeraCrypt
  19. 使用多线程实现多客户端的连接(通过Socket实现TCP编程)
  20. 腾讯云服务器如何重装系统

热门文章

  1. C++将一个cpp文件中的变量应用到另一个cpp文件中
  2. 书名带冒号_书名号、引号、括号和冒号如何套用
  3. 哥德巴赫猜想python
  4. 心知天气api PHP,php调用心知天气API,实现微信自动回复
  5. 【windows】windows家庭版调出本地组策略编辑器的方法
  6. 最新电脑cpu性能排行服务器,服务器cpu性能排行,详细教您服务器cpu性能排行
  7. 百度大脑iOCR助力财务报销智能化,省时省力
  8. 网易云音乐、微博成新规后首批IPO企业 招股书披露数据安全风险
  9. python高级进阶_20_进程之间的通信之queue(Poo演示)
  10. 小白刷LeeCode(算法篇)7