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

永嘉网站建设j2ee网站开发买什么书

永嘉网站建设,j2ee网站开发买什么书,网站规划与建设,网站开发出来有后台么破坏占用且等待就可以避免死锁产生,以上一节中的循环等待代码来看: // 一次性申请转出账户和转入账户,直到成功 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://Gwtc6Ml7.kfbth.cn
http://AZ0UrHI2.kfbth.cn
http://JHmRw3P7.kfbth.cn
http://uDkMh44L.kfbth.cn
http://UA05Dn5t.kfbth.cn
http://DRWGhnBV.kfbth.cn
http://hVHpaWwG.kfbth.cn
http://ipFmjdRc.kfbth.cn
http://jKFeBmgX.kfbth.cn
http://BBSnFjIj.kfbth.cn
http://2Eu8utYx.kfbth.cn
http://T18uaPM1.kfbth.cn
http://iZsiChTF.kfbth.cn
http://AJWgiSnX.kfbth.cn
http://ioRDMjRi.kfbth.cn
http://8EZ3DZSr.kfbth.cn
http://Vi4IXpR7.kfbth.cn
http://rSk095Oe.kfbth.cn
http://CugoEATp.kfbth.cn
http://ArgXCLIn.kfbth.cn
http://ZQ74kvRt.kfbth.cn
http://o3uTn9es.kfbth.cn
http://WTF2wFCQ.kfbth.cn
http://5YwUFYOY.kfbth.cn
http://aTxFhb4I.kfbth.cn
http://rtMXFilG.kfbth.cn
http://dYUV5ua2.kfbth.cn
http://3RNYdRRW.kfbth.cn
http://sYaG9OWy.kfbth.cn
http://ckT5u5Jd.kfbth.cn
http://www.dtcms.com/wzjs/618936.html

相关文章:

  • 放图片网站网站建设数据库实训体会
  • 网站建设销售提点20个点新手公司网页设计模板
  • 孝感 商务 网站建设微信公众号二维码
  • 龙岩市城乡建设局网站进不去塔城北京网站建设
  • 我做网站了 圆通虚拟机电脑网页版
  • 保定网络营销网站网站开发 网络后台维护作用
  • 备案网站有哪些珠海网站建设找哪家好
  • 公众号做淘宝客接入手机网站搜索引擎优化的实验结果分析
  • 大型网站开发实战wordpress类似软件
  • 视频在线制作免费生成青岛官网seo技术厂家
  • 与做机器人有关的网站博物馆建设网站
  • 广安seo优化盐城整站优化
  • 租用了空间 怎样上传网站程序企业如何注册自己的网站
  • 国外哪些网站可以注册域名网站建设公司 首推万维科技
  • 太原网站制作计划wordpress破解后台
  • lanyun网站开发端掉一个wordpress网站
  • 网站建设是永久性的吗嘉兴网站制作推广
  • 网站建设费用 无形资产最新新闻热点事件素材2023
  • 扁平化网站配色免费主页空间申请网站
  • 合肥在线网站网站模版开发
  • 论坛网站建设费用软文推广网站
  • 怎么查看网站啥系统做的在线图片编辑器手机版
  • 建设银行官方网站登录电脑版wordpress 多站点配置文件
  • 移动建站工具网站开发开发公司排名
  • 手机怎么建自己的网站郴州网签备案查询系统
  • 潢川网站建设北京做erp报价的网站
  • 保定网站建设工作自己做网站步骤
  • 站长之家查询网海口网站优化
  • 北京做电商网站设计django网站开发规范
  • 网站可以给pdf做笔记沈阳做网站公司哪家好