当前位置: 首页 > 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.dnsts.com.cn/news/32765.html

相关文章:

  • html5响应式网站psdpython做网站视频教程
  • 商城网站建设浩森宇特网站建设征求意见
  • 网站建设合同 知乎中国万网提供的服务和收费情况
  • 网站生成静态页面工具南康网站网站建设
  • vps 网站能打开链交换
  • 企业网站建设总结报告搜索技巧的网站
  • uv推广平台学校网站怎么做优化
  • 青岛建设网站开发者模式有什么好处和坏处
  • 辽宁网站建设fengyan汕头网站开发
  • 怎么删除网站死链重庆专业微信商城建设公司
  • 网站建设给客户看的ppt模板在百度备案网站
  • 张家港快速网站建设成立一个做网站的公司
  • 如何做新闻自动采集网站企业管理系统项目源码
  • 唐山网站建设方案优化wordpress博客分页
  • 贵州省建设网官方网站济南做公司网站需要多少钱
  • 济南网站建设 unzz平度城乡建设局网站
  • 国际设计网站有哪些北京市建设局网站
  • flash国外网站海报设计图片大全
  • 宁夏网站开发设计说明书做国外网站做什么内容
  • 网站宣传推广平台凡科网站后台登陆
  • 深圳网站建设最专业js调用wordpress文章列表
  • 做网站公司郑州郑州的网站建设公司哪家好前端开发培训学校
  • 网上买保险网站项目建设我先行凝心聚力促发展
  • python做网站内容爬虫wordpress能仿站吗
  • 盐城网站优化苏州网站建设模版
  • saas网站开发做国内学历公证的网站
  • 儿童 网站 设计沈阳专业做网站
  • 织梦如何做英文网站网页设计公司联系方式
  • 网站建设安全问题湖南网站建设 要上磐石网络
  • 吉林网站建设哪家好linux一键安装wordpress