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

昆明网站建设服务公司电子化业务管理与网站建设

昆明网站建设服务公司,电子化业务管理与网站建设,商城网站 前置审批,做网站虚拟主机哪里有文章目录 类型原理使用看门狗与setNx比较 类型 使用Redission#xff0c;lock的机制其实是使用了ttl#xff0c;一直等ttl为0再get。无论是redission还是redis的setNx#xff0c;只要是锁#xff0c;都必须有加锁和释放锁两个动作#xff0c;二者缺一不可#xff0c;并且… 文章目录 类型原理使用看门狗与setNx比较 类型 使用Redissionlock的机制其实是使用了ttl一直等ttl为0再get。无论是redission还是redis的setNx只要是锁都必须有加锁和释放锁两个动作二者缺一不可并且需要把释放锁放到final中这样可以保证锁一定被释放。 lock和unlock必须搭配使用缺一不可。 redission中常用的lock就两个一个是lock一个是trylock。两者都是阻塞加锁 前者会一直阻塞相应的该方法不存在返回值因为无意义后者可以传入一个等待时间等待时间内持续阻塞相应的该方法存在返回值因为要确认是否成功加了锁。根据业务场景自己判断使用哪种锁二者其实相似trylock就是lock的进阶加了一个等待时间而已。 trylockpublic boolean tryLock(long waitTime, long leaseTime, TimeUnit unit)public boolean tryLock(long waitTime, TimeUnit unit)public boolean tryLock() lockpublic void lock()public void lock(long leaseTime, TimeUnit unit) private void lock(long leaseTime, TimeUnit unit, boolean interruptibly)waitTime等待/阻塞时间tryLock若没有则等同于lock leaseTime锁持续时间 unit时间单位。 其实大部分的重载方法都是将参数少/无参的方法加了一些默认值最后return参数最多的方法。 原理 如果没有指定leaseTime加锁时长则意味着让看门狗守护线程且该守护线程是连接级别不是线程管理锁的过期时间该时间由配置文件控制默认为30S然后在过期时间的1/3时刻进行监听一次线程还在则加时加时也是走配置文件。如果指定了leaseTime则意味着自己管理过期时间看门狗不会介入即不会自动续期到了leaseTime之后如果程序没有执行完毕依旧会释放锁。此时其他线程就可以继续对key加锁如果线程A加锁成功线程B又来加锁此时线程B会获取到线程A还有多少秒释放锁然后线程B会通过semaphore信号量来等待一定的时间线程B在等待了一定的时间之后会重新尝试进行加锁加锁成功就返回如果失败就重复3步 使用 关于lock和trylock的使用按场景需要进行抉择关于leaseTime是否指定也就是说要不要使用看门狗控制过期时间这个很难抉择 各有利弊如果可以自己估算业务时间建议别用看门狗因为看门狗存在失效或者死锁的可能但是如果实在估算不出程序执行时间只能冒险用看门狗了。 看门狗 Redisson中的看门狗Watchdog机制用于自动延长锁的持有时间以防止锁在业务逻辑执行过程中过期。它的工作原理如下 锁续期当一个线程获取锁后Redisson会启动一个后台任务看门狗定期检查锁的持有时间并在锁即将过期时自动延长锁的持有时间。自动释放如果线程正常释放锁看门狗会停止续期任务。如果线程异常退出看门狗也会在锁过期后自动释放锁。 然而虽然看门狗机制设计得很好但在某些极端情况下仍然可能出现死锁。以下是一些可能导致死锁的场景 资源竞争在高并发环境下多个线程竞争同一个锁可能会导致某些线程长时间等待锁从而增加死锁的风险。系统资源耗尽如果系统资源如线程池、内存耗尽可能会导致看门狗无法正常工作从而引发死锁。网络问题如果Redis服务器出现网络问题导致看门狗无法及时续期锁可能会导致锁过期从而引发死锁。 为了避免这些潜在的死锁问题可以采取以下措施 合理设置锁的超时时间确保锁的超时时间足够长以覆盖大部分业务逻辑的执行时间。监控和告警监控系统的运行状态及时发现和处理资源耗尽、网络问题等异常情况。优化业务逻辑尽量减少锁的持有时间避免长时间占用锁。 总结就是 Redisson中的看门狗机制通常不会导致死锁但在高并发、资源耗尽或网络问题等极端情况下仍然可能出现死锁。通过合理设置锁的超时时间、监控系统状态和优化业务逻辑可以有效降低死锁的风险。 与setNx比较 在一定程度上redission比setNX更优秀因为它的所有操作都是通过的lua脚本 先判断key是否存在如果key不存在就加锁并且设置过期时间如果key已经存在并且当前加锁的key是重入了那就将key对应的加锁次数加1如果key已存在并且当前加锁的key和线程和已加锁的不一样无法重入那就返回当前key的过期时间
http://www.w-s-a.com/news/815905/

相关文章:

  • 电子商务网站开发与建设试卷php网站开发专业
  • 运城网站制作路90江苏省网站备案系统
  • 唐山做企业网站实体门店管理系统
  • 网站优化推广教程深圳网站建设世纪前线
  • 网站建设专家哪家好兰州网络推广执行
  • 广东住房和城乡建设厅网站王芃增加网站收录
  • 北京网站建设手机app电子商务网红营销的劣势
  • 网站 营销型wordpress获取4条文章标题
  • 浦东区建设工程监督网站建立全国统一的突发事件信息系统
  • 做网站需要基础吗重庆市造价信息网
  • 我要建设公司网站大连培训网站建设
  • 网站建设校长信箱设计方案小程序报价开发
  • 电子网站建设ppt模板营销策划方案怎么写?
  • 什么网站收录排名最高济南能源建设网站
  • 深圳移动网站建设公司价格桂林做网站哪家公司好
  • 互联网网站名字网站合作建设合同
  • 舟山高端网站设计广州优化排名推广
  • 哪个网站做免费广告好上海人才网站
  • cn域名做网站竞价推广代理
  • 省建设干部培训中心网站网站地图1 500 怎么做
  • 制作一个网站需要哪些人网站建设经营服务合同
  • 山东省住房和城乡建设厅官方网站网易发布广州
  • 长沙设计网站效果设计师灵感网站
  • 做网站php都用什么框架把asp.net写的网站别人怎么访问
  • 网站建设捌金手指下拉六正规的代运营公司
  • 自己申请网站空间冀州建网站
  • 哈尔滨旅游团购网站建设江苏建设工程建设网
  • 在郑州做网站茶叶网站建设网页设计制作
  • 58做网站吗南京有关制作网站的公司
  • 申请建设门户网站的申请先做网站还是先申请域名