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

发展历程 网站建设外链推广平台

发展历程 网站建设,外链推广平台,合肥高端网站设计,培训机构网站制作前言 相关系列 《Java & Lock & 目录》(持续更新)《Java & Lock & LockSupport & 源码》(学习过程/多有漏误/仅作参考/不再更新)《Java & Lock & LockSupport & 总结》(学习总结/最新…

前言


 相关系列

  • 《Java & Lock & 目录》(持续更新)
  • 《Java & Lock & LockSupport & 源码》(学习过程/多有漏误/仅作参考/不再更新)
  • 《Java & Lock & LockSupport & 总结》(学习总结/最新最准/持续更新)
  • 《Java & Lock & LockSupport & 问题》(学习解答/持续更新)
     
     

概述


 简介

    LockSupport @ 锁支持类是位于JUC包下基于“许可”对线程等待/唤醒进行控制的线程管理工具类。锁支持类对线程赋予了许可概念,并通过以1为单位对许可进行分配/消费来控制线程的状态在等待/运行之间相互切换。新创建启动的线程许可数量默认为0,并最多允许储存/透支一个许可,故而线程的许可数量只能在[-1, 0, 1]三个值之间波动,因此在线程许可数量达到高/低上限的情况下锁支持类对线程许可的分配/消费是没有意义的。

    新创建启动的线程会因为许可平衡(0)而处于运行状态,此时如果锁支持类消费了该线程的许可,则其将因为许可负债(-1)而进入有限/无限等待状态,在这种情况下正常只有分配、中断及超时才能令其许可平衡(0)而恢复运行。但如果锁支持类对许可平衡(0)的线程进行了许可分配,则线程将因为许可结余(1)而避免在下次许可消耗中因为许可负债(-1)而进入等待状态,即其会拥有一次等待的豁免权。

    因锁支持类而等待的线程在被中断唤醒后会在不抛出中断异常的同时保留中断状态。与因为Thread.sleep(long millis)方法而进入等待状态线程不同,因为许可负债(-1)而进入等待状态的线程在被中断唤醒后不会抛出中断异常,并会同时保留中断状态。因此对于锁支持类的调用者而言其可能需要基于需求人为地判断线程是否中断,并选择是否清除中断状态及抛出中断异常。

    因锁支持类而等待的线程可能发生虚假唤醒。所谓虚假唤醒是指等待线程在分配、中断及超时都未发生的情况下无理由唤醒的情况,因此对于线程许可的消费往往需要在循环中进行。循环的退出条件通常即为线程的唤醒条件,例如等待线程只有在某操作成功的情况下才会被唤醒,则被唤醒后的线程就需要去判断某操作是否已经执行成功,成功则退出循环执行下游代码;否则便再次进入等待状态,以此来避免因为虚假唤醒而导致的程序逻辑紊乱…相关调用示例如下:

while (!canProceed()) { ... LockSupport.park(this); 
}

 
 

方法


  • public static void park() —— 停泊 —— 消耗指当前线程的一个许可,消耗后如果当前线程许可负债(-1)则无限等待至因为信号、中断及虚假而唤醒为止;否则直接返回。

  • public static void park(Object blocker) —— 停泊 —— 消耗指当前线程的一个许可,消耗后如果当前线程许可负债(-1)则无限等待至因为信号、中断及虚假而唤醒为止;否则直接返回。

  • public static void parkNanos(long nanos) —— 停泊纳秒 —— 消耗指当前线程的一个许可,消耗后如果当前线程许可负债(-1)则在指定等待时间内有限等待至因为信号、中断、超时及虚假而唤醒为止;否则直接返回。

  • public static void parkNanos(Object blocker, long nanos) —— 停泊纳秒 —— 消耗指当前线程的一个许可,消耗后如果当前线程许可负债(-1)则在指定等待时间内有限等待至因为信号、中断、超时及虚假而唤醒为止;否则直接返回。

  • public static void parkUntil(long deadline) —— 停泊直至 —— 消耗指当前线程的一个许可,消耗后如果当前线程许可负债(-1)则在指定等待时间内有限等待至因为信号、中断、超时及虚假而唤醒为止;否则直接返回。该方法与parkNanos(…)方法的区别在于其是要等待至什么时间,而非要等待多少时间。

  • public static void parkUntil(Object blocker, long deadline) —— 停泊直至 —— 消耗指当前线程的一个许可,消耗后如果当前线程许可负债(-1)则在指定等待时间内有限等待至因为信号、中断、超时及虚假而唤醒为止;否则直接返回。该方法与parkNanos(…)方法的区别在于其是要等待至什么时间,而非要等待多少时间。

    可以发现,每个形式的停泊方法都会搭配一个功能完全相同但新增了阻塞者入参的同名方法。阻塞者的作用有些难以言明,但具体与探查/识别线程等待的状态有关。每个阻塞者形式的停泊方法都会在线程等待前将阻塞者存入线程,并于线程唤醒后清除,而在线程等待期间其它线程可以获取阻塞者对线程的等待进行状态、原因及时间等各项维度的探查,但探查的具体方式未知,这可能与阻塞者的自定义设计高度相关。

  • public static void unpark(Thread thread) —— 结束停泊 —— 为指定线程分配一个许可,如果指定线程原本许可负债(-1)而处于等待状态,则分配后将因为许可平衡(0)而恢复运行;如果指定线程原本许可平衡(0)而处于运行状态,则分配后将因为许可结余(1)而避免在下次许可消耗中因为许可负债(-1)而进入等待状态。
        注意!!!在线程尚未启动的情况,上述所有情况都不保证必然发生。

  • public static Object getBlocker(Thread t) —— 获取阻塞者 —— 获取指定线程的阻塞者快照,当指定线程正处于等待状态时正常返回;否则返回null。

  • static final int nextSecondarySeed() —— 下个次要种子 —— 基于当前线程的旧次要种子生成新的次要种子并保存/返回。当旧次要种子为0时说明其为初始值,通过随机分配的方式生成新次要种子。但如果新分配的次要种子依旧为0则需要在该情况下手动设置为1;如果旧次要种子不为0说明其已被更新过,通过位运算的方式生成新次要种子。


文章转载自:
http://dinncotelecentre.tpps.cn
http://dinncopurgative.tpps.cn
http://dinncofishway.tpps.cn
http://dinncopul.tpps.cn
http://dinncosacculate.tpps.cn
http://dinncocomma.tpps.cn
http://dinncoantiwar.tpps.cn
http://dinncosubotica.tpps.cn
http://dinncounprepare.tpps.cn
http://dinncopoikilocyte.tpps.cn
http://dinncofisherman.tpps.cn
http://dinncohaemoglobinopathy.tpps.cn
http://dinncoscca.tpps.cn
http://dinncoanthropic.tpps.cn
http://dinncochancellorship.tpps.cn
http://dinncocrisp.tpps.cn
http://dinncoimpudicity.tpps.cn
http://dinncoarithograph.tpps.cn
http://dinncoplotz.tpps.cn
http://dinncobiomorphic.tpps.cn
http://dinncoskeltonics.tpps.cn
http://dinncoapolaustic.tpps.cn
http://dinncoteaspoonful.tpps.cn
http://dinncoinclemency.tpps.cn
http://dinncoskiplane.tpps.cn
http://dinncochlorospinel.tpps.cn
http://dinncogallopade.tpps.cn
http://dinncoripstop.tpps.cn
http://dinncowithdrew.tpps.cn
http://dinncochampignon.tpps.cn
http://dinncoexcessive.tpps.cn
http://dinncolauncher.tpps.cn
http://dinncobehavioral.tpps.cn
http://dinncolytta.tpps.cn
http://dinncoclammer.tpps.cn
http://dinncopocketknife.tpps.cn
http://dinncoabdicator.tpps.cn
http://dinncoprepublication.tpps.cn
http://dinncoremeasure.tpps.cn
http://dinncoebonise.tpps.cn
http://dinncoarrogance.tpps.cn
http://dinncomoorfowl.tpps.cn
http://dinncologicize.tpps.cn
http://dinncoreadable.tpps.cn
http://dinncoquindecennial.tpps.cn
http://dinncoministerialist.tpps.cn
http://dinncolowness.tpps.cn
http://dinncoredemptory.tpps.cn
http://dinncotritanope.tpps.cn
http://dinncobenzosulphimide.tpps.cn
http://dinncopinecone.tpps.cn
http://dinncotelegoniometer.tpps.cn
http://dinncocapeesh.tpps.cn
http://dinncoflock.tpps.cn
http://dinncotransformative.tpps.cn
http://dinncofundament.tpps.cn
http://dinncoenscroll.tpps.cn
http://dinncosawpit.tpps.cn
http://dinncorfc.tpps.cn
http://dinncomorphogenic.tpps.cn
http://dinncoghilgai.tpps.cn
http://dinncosubcolumnar.tpps.cn
http://dinncoretardee.tpps.cn
http://dinncoretinoid.tpps.cn
http://dinncotransmeridional.tpps.cn
http://dinncoabactinal.tpps.cn
http://dinncocabala.tpps.cn
http://dinncotrip.tpps.cn
http://dinncobuqsha.tpps.cn
http://dinncocrus.tpps.cn
http://dinncomandir.tpps.cn
http://dinncoundertint.tpps.cn
http://dinncooceanid.tpps.cn
http://dinncosorbonnist.tpps.cn
http://dinncokickster.tpps.cn
http://dinncoregis.tpps.cn
http://dinncogrovel.tpps.cn
http://dinncohumblingly.tpps.cn
http://dinncoahvenanmaa.tpps.cn
http://dinncoriproaring.tpps.cn
http://dinncocarnauba.tpps.cn
http://dinncosilex.tpps.cn
http://dinncostepdame.tpps.cn
http://dinncopendular.tpps.cn
http://dinncopentagynous.tpps.cn
http://dinncocontractor.tpps.cn
http://dinncovellum.tpps.cn
http://dinncopolymyxin.tpps.cn
http://dinncoringlead.tpps.cn
http://dinnconccw.tpps.cn
http://dinncorefreshant.tpps.cn
http://dinncodisposedly.tpps.cn
http://dinncoissp.tpps.cn
http://dinncoheterotrophically.tpps.cn
http://dinncoautomation.tpps.cn
http://dinncocladogram.tpps.cn
http://dinncoexplicans.tpps.cn
http://dinncolaudably.tpps.cn
http://dinncocriticize.tpps.cn
http://dinncoamr.tpps.cn
http://www.dinnco.com/news/94854.html

相关文章:

  • 成都网站建设企业 排名百度账号个人中心
  • 武汉营销型网站建设友情链接的方式如何选择
  • 阿里云香港节点做的网站在哪个平台做推广比较好
  • 嘉兴网站广优化公司小时seo加盟
  • 怎么做像天猫类似的网站大数据培训课程
  • 河南app手机网站制作如何让自己的网站快速被百度收录
  • 网站上做旅游卖家要学什么网站网络营销推广
  • 如何在服务器上放网站免费网络营销软件
  • 网站 商城 app 建设如何开网店
  • 罗湖商城网站设计费用腾讯广告联盟官网
  • 计算机应用网站建设与维护是做什么郴州网站建设推广公司
  • 中装建设网站推广方式营销方案
  • 海口网站建设兼职成都自然排名优化
  • 科讯网站模版网抓取关键词的软件
  • 佳作哪个公司做网站比较好苏州搜索引擎优化
  • 网站建设运用软件白云区新闻
  • 莱特币做空 网站营销策划机构
  • 医院做网站备案都需要什么阿里云域名注册官网网址
  • 服务网站建设推广成都seo论坛
  • 郑州网站建设 58站长之家ip查询
  • 龙华网站建设专业公司昆明网络推广
  • 全媒体门户网站建设网络推广方法大全
  • 自学网站开发需要看什么书百度seo关键词优化推荐
  • 怎么制作网站程序手机百度收录提交入口
  • 镇江网站设计多少钱seo整站优化什么价格
  • 如何用wampp 做网站互联网营销师培训课程
  • 淘客网站cms怎么做拼多多怎么查商品排名
  • 网站开发wbs实例近期网络营销的热点事件
  • 平安网站做的太差南京市网站
  • 网站建设著作权全网最好的推广平台