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

网站改版 百度收录cdr做网站怎么导出

网站改版 百度收录,cdr做网站怎么导出,知名网站规划,西部数码网站管理助手v3.1自己在此记录一下#xff0c;方便日后复习。虚假唤醒的概念jdk官方文档解释#xff1a;所以说在wait和notify一块使用时#xff0c;如果使用if作为条件时#xff0c;会有虚假唤醒的情况发生#xff0c;所以必须使用while作为循环条件。下面来举例实验#xff1a;首先方便日后复习。虚假唤醒的概念jdk官方文档解释所以说在wait和notify一块使用时如果使用if作为条件时会有虚假唤醒的情况发生所以必须使用while作为循环条件。下面来举例实验首先创建一个资源类(在多线程中一般都是资源类和线程操作解耦不放在用同一个类中只有在线程操作资源类时才会创建资源类的对象)package com.test;/*** 资源类* author Huxudong* createTime 2020-04-01 21:57:39**/public class Resource {/** 产品数 */private int product 0;/** 进货 */public synchronized void get() {if(product 10) {System.out.println(Thread.currentThread().getName():产品已满!);/** 当商品已经满的时候进货线程挂起 */try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}/** 进货 */System.out.println(Thread.currentThread().getName(): product);/** 唤醒其他线程 */this.notifyAll();}/** 售货 */public synchronized void sale() {if(product 0) {System.out.println(Thread.currentThread().getName():产品已空);try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}/** 售货 */System.out.println(Thread.currentThread().getName(): --product);/** 唤醒其他线程 */this.notify();}}然后再创建线程来操作我们的资源类(通过java8新特性Lambda表达式直接创建)package com.test;import java.util.concurrent.TimeUnit;/*** 线程操作资源类实现线程与资源类的解耦合* author Huxudong* createTime 2020-04-01 23:13:54**/public class TestPc {public static void main(String[] args) {Resource resource new Resource();new Thread(()-{for (int i 0; i 20; i) {try {/** 睡眠便于观察结果 */TimeUnit.SECONDS.sleep(2);} catch (InterruptedException e) {e.printStackTrace();}resource.get();}},生产者A).start();new Thread(()-{for (int i 0; i 20; i) {resource.sale();}},消费者C).start();new Thread(()-{for (int i 0; i 20; i) {resource.get();}},生产者B).start();new Thread(()-{for (int i 0; i 20; i) {resource.sale();}},消费者D).start();}}先来看看如果使用if条件会发生什么对你没看错怎么可能会出现负数呢这肯定是不对的。冷静下来分析一下还是有点头绪知道哪里出现了问题的(那你是一个处事不惊的人很厉害)。来分析一下一开始先调用了消费者C,D线程(因为我们写了睡眠在生产者中)消费者此时发现此时product资源为0所以消费者C,D这两个兄弟没办法只能调用wait方法睡眠了并且释放了锁。但是此时第一个消费者已经苏醒了发动机开始生产产品了并且生产之后又唤醒了所有等待的消费者线程。这消费者C,D两兄弟终于苏醒了D哥们先获得了锁所以就先消费了一个产品然后就又发现没有产品了又伤心的休眠去了但是不要忘了此时还有一个C哥们被唤醒了啊你唤醒了人家人家总的干点什么事情吧不然这多难受刚好不巧的是此时的判断条件是if所以此时C哥们便不受条件的约束接着上面自己睡眠的代码处执行毅然决然的又去消费了一个产品原来D哥们消费后就已经为0了这个C哥们再去消费减一不就是-1了吗以此类推分析。发现如果判断条件用不好此时唤醒的C哥们就相当于虚假唤醒的了会给程序带来不可预估的错误。所以在这里判断必须要使用while先来看看把if换成while的结果。这回结果就比较正常了为什么使用while就可以呢因为像上文所说即使唤醒了所有的消费者线程此时会不停while循环判断如果此时条件是为0那么C哥们就不能出while那么他也就不回执行下面消费产品的减减操作了那么就会避免了这种错误。这也是官方提倡的在使用wait 和notifyAll的时候必须使用while循环条件判断。以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持聚米学院。
http://www.yutouwan.com/news/461631/

相关文章:

  • 优化一个网站需要多少钱一般网站的架构
  • 怎么用自助网站wordpress更改ico
  • 怎样创建设计公司网站网站后台首页
  • 如何在公司服务器建个内部 网站做网站的费用进什么科目
  • 移动网站开发服务器爱游戏app下载官方网站
  • 大连建站免费模板WordPress一键安装安全
  • 网站快照怎么做微信建设网站找哪家
  • 网站开发与维护专业百度搜不到自己的网站
  • 网站运营难做吗新西兰注册公司做网站
  • 海南省建设厅网站首页自己做淘宝客登录网站
  • 什么 电子商务网站建设与管网站相互推广怎么做
  • 静态网站登陆怎么做网站建设购买什么境外主机
  • 江苏省内网站建设移动商城个人中心
  • 网站做标签搭建一个网站多少钱
  • 网站源码做exe执行程序网络营销如何进行网站推广
  • 长沙做网站推广公司咨询犀牛云网站做的怎么样
  • 手机网站开发标准即时设计网页
  • 如何创建一个网站用来存放东西合肥网站推广 公司
  • 免费的开发网站建设哪里 教做网站带维护
  • 公众号怎么做微网站html 购物网站
  • 怎么做查询网站网站前台和后台
  • WordPress站群模版开发一个小程序流程
  • 建设网站合同范本登不了wordpress
  • 外贸网站示例哪里有好网站设计
  • 河间哪里有做网站的上海网站建设导航
  • 网站搭建的意义个人网站备案没有座机
  • 资中移动网站建设平台引流推广怎么做
  • 建设信用卡在网站挂失几步58同城最新招聘网
  • 宝和网站建设如何建设酒店预订系统网站
  • 会计题库网站怎么做win7如何安装iis来浏览asp网站