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

洛阳市网站建设网站推广优化服务

洛阳市网站建设,网站推广优化服务,网页文件打印乱码,wordpress设置默认首页破坏占用且等待就可以避免死锁产生,以上一节中的循环等待代码来看: // 一次性申请转出账户和转入账户,直到成功 while(!actr.apply(this, target));如果apply()操作耗时非常端,而且并发冲突量不大时,这个方…

破坏占用且等待就可以避免死锁产生,以上一节中的循环等待代码来看:

// 一次性申请转出账户和转入账户,直到成功
while(!actr.apply(this, target));

如果apply()操作耗时非常端,而且并发冲突量不大时,这个方案是不错的,因为这种场景下,循环上几次或者几十次就可以一次性获取锁,执行业务。但是如果apply()操作耗时长,或者并发冲突量很大的时候,循环等待就可能循环上万次才能获取锁,会导致CPU使用率升高,影响环境的问题。

这种场景,更好的解决方案是:如果线程要求的条件不满足,则线程阻塞自己,进入等待状态,在满足线程要求的条件后,通知等待的线程重新执行。

完整的等待-通知机制:线程首先获取互斥锁,当线程要求的条件不满足时,释放互斥锁,进入等待状态;当要求的条件满足时,通知等待的线程,重新获取互斥锁。

用synchronized实现等待-通知机制

在Java语言中,使用synchronized配合wait()、notify()、notifyAll()这三个方法就可以轻松实现。

image

如图,左边一个等待队列,同一时刻,只允许一个线程进入synchronized保护的临界区,当有一个线程进入临界区后,其他线程只能进入图中左边的队列等待,这个等待队列和互斥锁是一对一的关系,每个互斥锁都有自己独立的等待队列。

进入临界区后,由于不满足部分条件,需要进入等待状态,Java对象的wait()方法就能满足这个需求,当调用wait()方法后,当前线程就会被阻塞,并且进入右侧的等待队列,这个等待队列也是互斥锁的等待队列。线程在进入右侧等待队列的同时,会释放持有的互斥锁,线程释放后,其他线程就有机会获得锁,进入临界区。

当线程条件满足时,通知等待的线程,可以使用Java对象的notify()和notifyAll()方法,通知等待队列中的线程,条件曾经满足过,可以再次尝试获取锁,并判断条件是否满足。

对之前的代码进行优化

 while(条件不满足) {wait();}
class Allocator {private List<Object> als;// 一次性申请所有资源synchronized void apply(Object from, Object to){// 经典写法while(als.contains(from) ||als.contains(to)){try{wait();}catch(Exception e){}   } als.add(from);als.add(to);  }// 归还资源synchronized void free(Object from, Object to){als.remove(from);als.remove(to);notifyAll();}
}

用notifyAll()而没有使用notify(),是因为notify()会随机通知等待队列中的一个线程,而notifyAll()会通知等待队列中所有的线程,第一反应是同一时间只有一个线程进入临界区,用notify()就可以了,实际上notify()可能导致某些线程永远不会被通知到。

学习来源:极客时间 《Java 并发编程实战》学习笔记 Day04

http://www.dtcms.com/wzjs/343104.html

相关文章:

  • 通信科技网站设计自媒体135免费版下载
  • wordpress 博客信息seo网站推广案例
  • 亚马逊店铺出售网站情感营销案例
  • 建网站软件精准广告投放
  • php语言做购物网站网络推广代理
  • 自己有主机怎么做论坛网站seo全网营销
  • 南庄网站开发百度seo关键词点击软件
  • 如何建wap网站深圳优化排名公司
  • 做外贸门户网站谷歌搜索引擎入口2023
  • 网站介绍ppt怎么做百度账号
  • 凡科网建站怎么样太原关键词排名推广
  • 同城型网站开发营销 推广
  • 石家庄网站制作武汉腾讯广告投放平台官网
  • 查看别人wordpress主题厦门网站优化
  • 手机做网站对比路由器做网站有哪些推广平台和渠道
  • 网站开发类毕业论文深圳营销推广公司
  • 广州哪个公司做网站好郑州seo方案
  • 西安计算机培训机构排名前十河南seo和网络推广
  • 郑州的网站建设公司有哪些游戏代理平台一天结一次
  • 哈尔滨市建设工程交易中心网站西地那非片的功效与作用
  • 广东住房建设部官方网站seo发包排名软件
  • 深圳做棋牌网站建设找哪家公司好快速排名优化推广价格
  • 制作什么网站做毕业设计网站收录查询方法
  • 网站开发需要注意什么鸡西seo
  • 汽配公司的网站要怎么做长尾关键词挖掘词
  • 网站建设手机衡水seo营销
  • 西安网站运营长沙网站seo推广公司
  • 圣弘建设股份有限公司网站免费b站在线观看人数在哪儿
  • 安阳县有多少个乡镇辽宁seo推广
  • 网站建设费用 优帮云厦门人才网唯一官方网站