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

山西建设网官方网站网页制作设计培训

山西建设网官方网站,网页制作设计培训,学院的网站建设的er图怎么画,硅谷主角刚开始做的是软件还是网站关于死锁#xff0c;估计很多程序员都碰到过#xff0c;并且有时候这种情况出现之后的问题也不是非常好排查#xff0c;下面整理的就是自己对死锁的认识#xff0c;以及通过一个简单的例子来来接死锁的发生#xff0c;自己是做python开发的#xff0c;但是对于死锁的理解…关于死锁估计很多程序员都碰到过并且有时候这种情况出现之后的问题也不是非常好排查下面整理的就是自己对死锁的认识以及通过一个简单的例子来来接死锁的发生自己是做python开发的但是对于死锁的理解一直是一种模糊的概念也是想过这次的整理更加清晰的认识这个概念。用来理解的例子是一个简单的生产者和消费者模型这里是有一个生产者有两个消费者,并且注意代码中使用notify方法的代码行packagestudy_java.ex11;importjava.util.LinkedList;importjava.util.List;public classPCDemo1 {public static voidmain(String[] args){Pool pool newPool();Producter p1 newProducter(pool);p1.setName(p1);Consumer c1 newConsumer(pool);Consumer c2 newConsumer(pool);c1.setName(c1);c2.setName(c2);p1.start();c1.start();c2.start();}}classPool{private List list new LinkedList();private int Max 1;public void addLast(intn){String nameThread.currentThread().getName();synchronized (this){while (list.size() Max){try{System.out.println(name.wait());this.wait();}catch(Exception e){e.printStackTrace();}}System.out.println(name n);list.add(newInteger(n));System.out.println(name .notify());this.notify(); //注意这里是调用的是notify方法}}public intremove(){String nameThread.currentThread().getName();synchronized (this){while (list.size() 0){try{System.out.println(name .wait());this.wait();}catch(Exception e){e.printStackTrace();}}System.out.println(name - 0);int no list.remove(0);System.out.println(name .notify());this.notify(); //注意这里是调用的是notify方法returnno;}}}//生产者class Producter extendsThread{privatePool pool;static int i 1;publicProducter(Pool pool){this.pool pool;}public voidrun(){while (true){pool.addLast(i);System.out.println(生产者生产了i号);}}}//消费者class Consumer extendsThread{privatePool pool;publicConsumer(Pool pool){this.pool pool;}public voidrun(){while (true){int no pool.remove();System.out.println(消费者消费了no号);}}}这段代码的运行效果是日志,在最后程序卡主不动了c1.wait()p11p1.notify()c1-0c1.notify()消费者消费了1号c1.wait()生产者生产了2号p12p1.notify()c1-0c1.notify()消费者消费了2号c1.wait()生产者生产了3号p13p1.notify()c1-0c1.notify()消费者消费了3号c1.wait()生产者生产了4号p14p1.notify()c1-0c1.notify()消费者消费了4号c1.wait()生产者生产了5号p15p1.notify()c1-0c1.notify()消费者消费了5号c1.wait()生产者生产了6号p16p1.notify()生产者生产了7号c1-0c1.notify()消费者消费了6号c1.wait()p17p1.notify()生产者生产了8号p1.wait()c2-0c2.notify()消费者消费了7号c2.wait()c1.wait()p18p1.notify()生产者生产了9号p1.wait()c2-0c2.notify()消费者消费了8号c2.wait()c1.wait()对上面的出现卡主的情况进行分析理解为啥会卡主从这次的执行效果可以看出第一次是c1抢到了执行权但是这个时候pool是空所以c1没有可以消费的对象被放入到了等待队列接着p1抢到了执行权生产了1个然后p1.notify(),这个时候等待队列里只有c1,所以c1被唤醒c1消费了1个然后c1.notify(), 这个时候等待队列也没有等待的这个时候有被c1抢到了执行权但是pool里没有可以消费的内容所以c1.wait() 进入到等待队列这个时候p1抢到执行权生产了1个然后p1.notify(),这个时候等待队列里只有c1,所以c1被唤醒c1也抢到了执行权消费了1个然后c1.notify()同样这个时候等待队列里没有等待的c1这次又抢到了执行权但pool里没有可以消费的内容所以c1.wait(),进入到等待队列p1 又抢到了执行权生产1个然后p1.notify(),这个时候等待队列里只有c1,所以c1被唤醒c1也抢到了执行权消费了1个然后c1.notify()同样这个时候等待队列里没有等待的c1这次又抢到了执行权但pool里没有可以消费的内容所以c1.wait(),进入到等待队列.......这种情况重复了几次但是运行到下面这段的时候问题出现了p17p1.notify()生产者生产了8号p1.wait()c2-0c2.notify()消费者消费了7号c2.wait()c1.wait()p18p1.notify()生产者生产了9号p1.wait()c2-0c2.notify()消费者消费了8号c2.wait()c1.wait()继续进行分析中间重复的部分不做分析了和前面的过程是一样的这个时候等待队里里依然是c1 这个时候p1抢到了执行权生产了1个p1.notify() 这个时候等待队列里只有c1,所以c1被唤醒但是c1没有抢过p1,p1自己又抢到了执行权但是这个时候pool里面已经有内容所以p1没有生产p1.wait()p1进入等待队列这个时候c2抢到了执行权c2消费1个c2.notify() 这个时候等待队里是p1p1被唤醒但是这个时候c2抢到了执行权但是pool没有内容可以消费所以c2.wait() 进入等待队列接着c1抢到了执行权同样pool没有可以消费的内容c1.wait() 进入到等待队列p1这个时候抢到了执行权p1生产了1个接着p1.notify() 这个时候等待队列里有c1和c2,但是只有一个会被唤醒不管是哪个结果没抢过p1,p1再次拿到执行权但是这个时候pool已经有内容所以p1.wait() p1进入等待队列从下面是c2执行可以看出刚才是c2被唤醒了这个时候c2也拿到了执行权消费了1个。c2.notify() 等待队列里这个时候有c1 和p1 但是这个时候c2 自己抢到了执行权,但是没有可以消费的c2.wait() c2 进入等待队列不巧的是刚才抢到执行权的正好是c1,所以c1继续wait,再次进入等待队列到这个时候p1 c1 c2 都进入等待队列里都在等待唤醒也就出现了程勋最后卡住不动的情况解决的方法有两种第一种其实解决上面的方法也比较简单就是把调用notify的地方全部换成notifyAll方法notify和notifyAll的区别是当执行notifyAll的时候会唤醒所有等待的线程从而避免之前的都在等待队列等待的问题第二种就是wait()的时候加上超时参数不是像之前一直傻等而是在超过既定的时间之后自己唤醒
http://www.yutouwan.com/news/176368/

相关文章:

  • 班级网站空间建设取得效果怎么才能在百度上打广告
  • 石家庄哪家公司做网站好老板合作网站开发
  • 太原网站排名系统软件销售具体怎么做的
  • 我是建造网站html代码下载
  • 网页型网站科技项目申报
  • 自己做的旅游网站 介绍wordpress仿微博
  • 西安金融网站建设做暖漫画网站
  • 免费模板下载网站整合营销
  • 云上的网站怎么做等保苏州高端网站设计机构
  • 建立网站费用多少怎么查看网站打开速度
  • 魔艺极速建站wordpress接单修改任务
  • 外贸公司网站如何免费推广wordpress导航主题模板下载
  • 查找网站后台入口口腔医院网站建设
  • 怎么制作网站商城小程序 wordpress打包
  • 绵阳市住房和城乡建设局网站苏州设计院
  • 做网站功能需要注意什么邯郸网站设计报价
  • 专业生产佛山网站建设网站导航栏固定
  • 研艺影楼网站建设酒店分销平台有哪些
  • 网站发布信息的基本流程重庆网站策划
  • 单位网站中文域名到期续费网站的尾页要怎么做
  • 网站建设上传视频教程佛山市手机网站建设公司
  • 智能网站价格网站开发实训目的
  • 网站的表单网架公司股价
  • 深圳高端网站建设公司如何推广一个公众号
  • 网站建设及优化 赣icp北京优化推广公司
  • 周口哪里有做网站的网站建设开票税率
  • 基于ssh架构网站开发个人可以注册企业邮箱吗
  • 做宠物的网站it培训机构出来能找到工作吗
  • 上海企业免费网站建设怎么在阿里巴巴做网站
  • 义乌网站建设公司哪家好论坛类网站备案吗