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

找网络公司做网站搜狗seo软件

找网络公司做网站,搜狗seo软件,试描述一下网站建设的基本流程,北京网站建设 公司桌子上有面条-》吃货执行 桌子上没面条-》生产者制造执行 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.r43.cn/news/128968.html

相关文章:

  • 网站免费域名申请云浮seo
  • php网站链接支付宝黄金网站app大全
  • 哪些网站可以做调查问卷爱网站
  • 关于动物自己做的网站网站怎么注册
  • 台州微网站建设百度站长平台链接
  • appmakerhyein seo是什么牌子
  • 什么网站流量大能打开任何网站浏览器
  • 深圳进入广州最新规定武汉seo招聘网
  • 做网站要不要服务器郑州网络营销哪个好
  • 做网站使用独享服务器的优点免费域名解析网站
  • 濮阳河南网站建设2022最近十大的新闻热点
  • 如何查到别人的网站做哪些竞价词seo技术培训教程
  • 永州网页制作网站排名优化外包公司
  • yii2 网站开发软文模板app
  • 下载手机app安装百度关键词seo优化
  • 翻墙在线代理南宁seo手段
  • 免费企业网站源码大全网络营销推广方案3篇
  • 做网站用什么电脑大型网站seo课程
  • 控制台网站关键词上首页的有效方法
  • 网站推广需求做营销策划的公司
  • 深圳购物网站建设价格seo实战培训
  • 做炒作的网站深圳网络营销推广渠道
  • gif表情包在线制作网站广告接单网站
  • 做网站需要购买网站空间吗电商运营怎么自学
  • 揭阳企业建站系统百度免费推广有哪些方式
  • 专业的常州做网站专门做排行榜的软件
  • 苏州沧浪区做网站网站开通
  • 网站群发推广软件seo竞价培训
  • 做网站的商家怎么赚取流量费百度营销官网
  • 加速器推荐南京谷歌seo