当前位置: 首页 > news >正文

石家庄专业做网站站长工具关键词排名怎么查

石家庄专业做网站,站长工具关键词排名怎么查,分类信息源码cms,东莞建设网网上平台桌子上有面条-》吃货执行 桌子上没面条-》生产者制造执行 1、消费者等待 消费者先抢到CPU执行权,发现桌子上没有面条,于是变成等待wait状态,并释放CPU执行权,此时的CPU肯定会被厨师抢到,初始开始做面条,…

在这里插入图片描述
桌子上有面条-》吃货执行
桌子上没面条-》生产者制造执行
在这里插入图片描述

1、消费者等待

消费者先抢到CPU执行权,发现桌子上没有面条,于是变成等待wait状态,并释放CPU执行权,此时的CPU肯定会被厨师抢到,初始开始做面条,当厨师做完后会对吃货进行提示,notify唤醒吃货来吃。
在这里插入图片描述
在这里插入图片描述

2、生产者等待

厨师先抢到CUP执行权,但是桌子上有面条,就不能再制作面条,只能等待消费者吃完面条才能做,消费者吃完后需要唤醒厨师继续做
在这里插入图片描述
代码逻辑:
在这里插入图片描述
厨师:

public class Cook extends Thread{@Overridepublic void run() {//1循环//2同步代码块//3共享数据是否到末尾,Yes//4共享数据是否到末尾,Nowhile (true){synchronized (Desk.lock){if (Desk.count==0){break;//10碗吃完}else {//厨师的核心逻辑//01判断桌子上是否有食物if (Desk.foodflag==1){//02有食物就等待try {Desk.lock.wait();} catch (InterruptedException e) {throw new RuntimeException(e);}}else {//03没有System.out.println(Thread.currentThread().getName()+"制作食物");//04改变桌子状态Desk.foodflag=1;//05唤醒消费者吃Desk.lock.notifyAll();}}}}}
}

吃货:

public class Customer extends Thread{@Overridepublic void run() {while (true){synchronized (Desk.lock){if (Desk.count==0){break;//10碗吃完}else {//吃货的核心逻辑/** 1.判断桌子上有无面条* 2.没有:自己等待,* 3.有:吃完,并唤醒厨师做面条,count--* 4.修改桌子状态*/if (Desk.foodflag==0){//1.判断桌子上有无面条try {Desk.lock.wait();//2.没有:自己等待,} catch (InterruptedException e) {throw new RuntimeException(e);}}else {//3.有:吃完,并唤醒厨师做面条,count--Desk.count--;System.out.println(Thread.currentThread().getName()+"还能再吃"+Desk.count+"碗");Desk.lock.notifyAll();//4.修改桌子状态Desk.foodflag=0;}}}}}
}

桌子:

public class Desk {//通过变量来控制 0:没食物  1:有食物public static int foodflag=0;//总个数,最多做十碗public static int count=10;//锁对象public static Object lock=new Object();
}

//测试类

public class Test {public static void main(String[] args) {Customer customer = new Customer();Cook cook = new Cook();customer.setName("吃货");cook.setName("厨师");customer.start();cook.start();}
}

3、阻塞队列实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

接口无法new对象,只能通过两个实现类,第一个可以自定义队列长度。
注意:生产者与消费者必须针对同一个阻塞队列,阻塞队列可以创建在测试类中
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
厨师:

public class Cook extends Thread{ArrayBlockingQueue<String> queue;//创建构造函数,创建对象的时候进行赋值,指定同一个阻塞队列public Cook(ArrayBlockingQueue<String> queue) {this.queue = queue;}@Overridepublic void run() {while (true){try {queue.put("面条");System.out.println("厨师做了一碗面条");} catch (InterruptedException e) {throw new RuntimeException(e);}}}
}

消费者:

public class Customer extends Thread{ArrayBlockingQueue<String> queue;public Customer(ArrayBlockingQueue<String> queue) {this.queue = queue;}@Overridepublic void run() {while (true){try {String food=queue.take();//tack底层也进行了加锁,不需要我们自己定义System.out.println("获取食物"+food);} catch (InterruptedException e) {throw new RuntimeException(e);}}}
}

测试类:

public class Test {public static void main(String[] args) {ArrayBlockingQueue<String> queue=new ArrayBlockingQueue<>(1);Customer customer = new Customer(queue);Cook cook = new Cook(queue);customer.setName("吃货");cook.setName("厨师");customer.start();cook.start();}
}
http://www.mmbaike.com/news/35423.html

相关文章:

  • 上小学网站建设情感营销的十大案例
  • 做网站的抬头怎么做seo优化方式包括
  • 网站如何防注册机手游推广平台
  • 手机做免费个人网站百度关键词搜索推广
  • 山东建设兵团网站百度seo关键词
  • 潍坊作风建设网站怎么做推广比较成功
  • 福建网站建设推广网络舆情应急预案
  • 定制网站系统开发白杨seo博客
  • tomcat网站开发关键词排名
  • 新公司成立建设网站营销策略是什么意思
  • 本地资讯网站做的最好的网络营销方案设计毕业设计
  • 湖南省和城乡住房建设厅网站做网络推广有前途吗
  • 广州做网站哪家公司好营销渠道名词解释
  • 宿州网站建设多少钱宜兴网站建设
  • 电子邮箱网站建设大数据平台
  • 甘肃网站定制开发sem和seo是什么
  • 湖南省建设厅208号文seo技巧是什么意思
  • 购物网站页面设计图片百度小说排行榜2019
  • 专门做狗猫配套网站有什么意思我想创建一个网络平台
  • 自己做网站需不需要钱搜狗推广助手
  • 有哪些设计网站央视新闻
  • 湖南环保设备公司中企动力网站建设技术支持如何推广自己成为网红
  • 房地产公司网站建设与推广方案什么是网站优化
  • 什么网站可以做二建的题目海南百度推广公司电话
  • 摄影作品网站源码seo免费推广软件
  • wordpress无法访问图片株洲百度seo
  • 商城网站建设视频网站推广优化的原因
  • 门户网站制作平台好的营销网站
  • 图书馆网站建设海外推广专员
  • 精品课程网站开发项目石家庄关键词优化软件