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

深圳市福田区有哪些网络公司网络推广优化服务

深圳市福田区有哪些网络公司,网络推广优化服务,网页设计总结2000字,上海网站建设在哪里1. JDK集合类 对于JDK的集合类&#xff0c;forEach方法其实并不能完全避免并发修改异常。 forEach本质上还是一个循环遍历&#xff0c;如果在循环体内直接对集合进行修改&#xff0c;仍然会产生ConcurrentModificationException。 例如&#xff1a; List<String> lis…

1. JDK集合类

对于JDK的集合类,forEach方法其实并不能完全避免并发修改异常。

forEach本质上还是一个循环遍历,如果在循环体内直接对集合进行修改,仍然会产生ConcurrentModificationException。

例如:

List<String> list = new ArrayList<>();list.add("a");
list.add("b");list.forEach(item -> {if("a".equals(item)){list.remove(item); // 会出错}
});

这段代码在forEach中直接修改了list,仍会抛出并发修改异常。

forEach之所以被认为能够避免并发修改异常,主要有两个原因:

  1. 使用外部变量暂存修改,forEach只读不改

  2. 使用严格的函数式编程规范,不修改外部状态

但实际上,如果在forEach中直接修改集合,问题仍然存在。

相比forEach,使用普通for循环甚至更好,因为可以在修改前用实际大小预先拷贝一次集合。

所以forEach本质上不能避免并发修改异常,需要通过保存修改至外部变量等方式进行规避。

更好的实践是:

  1. 在修改前拷贝一次集合防止影响

  2. 使用stream流水线处理,避免状态共享

  3. 外部保存修改,forEach只读不改

2. Redisson

对于Redisson的RMap,其forEach方法可以避免并发修改异常。

RMap的forEach方法使用了乐观锁的机制,可以确保并发修改时的线程安全。

简单来说,它的实现原理是:

  1. 在forEach遍历时,会获取一个乐观锁

  2. 如果在遍历过程中,有其他线程修改了RMap,这会导致锁失效

  3. 一旦锁失效,forEach会自动重新traverse,重新获取新的锁

  4. 这样可以保证遍历过程中任何修改都不会导致并发异常

例如:

RMap<String, Integer> map = redisson.getMap("test");map.forEach((k, v) -> {// 在foreach时删除或修改mapmap.remove(k); 
}); 

以上代码是安全的,不会产生并发修改异常。

所以RMap的forEach方法通过乐观锁实现了对并发修改的安全遍历,我们可以在forEach里面改变RMap而不用担心线程安全问题。

这是与JDK集合不同的一点,对于Redis数据结构的遍历,Redisson提供了更好的并发控制。

除了RMap,Redisson还在其他数据结构提供了更优秀的并发控制机制:

  1. RLock - 红锁,基于Redis的分布式锁,确保线程安全
  2. RReadWriteLock - 读写锁,实现了自动扩展的锁
  3. RSemaphore - 信号量,基于Redis的语义
  4. RCountDownLatch - 分布式闭锁
  5. RSet - 并发Set,基于Redis的Set增强
  6. RQueue - 阻塞队列,可以监听元素事件
  7. RBlockingQueue - 带超时的阻塞队列
  8. RBlockingFairQueue - 公平阻塞队列
  9. RTopic - 发布订阅,支持集群
  10. RBatch - 支持异步批量命令

Redisson扩展了很多JDK并发工具类和集合接口,基于Redis提供了分布式下的强一致性语义实现。

所以在分布式环境使用Redisson,可以简化很多并发与同步的难点,比如分布式锁、闭锁、信号量等。

http://www.jinmujx.cn/news/76877.html

相关文章:

  • 中国诚信建设网站windows优化大师好吗
  • 网页制作网站开发流程网站seo服务
  • 韩国网站如何切换中文中国免费域名注册平台
  • 电影网站标题怎么做流量多现在做网络推广都有什么方式
  • 企业网页模板图片东莞网站推广优化网站
  • 织梦做网站简单吗百度推广营销怎么做
  • 建南沙做网站公司会计培训班一般收费多少
  • 天津做做网站营销必备十大软件
  • 花卉网站建设项目策划书站长之家排行榜
  • 织梦做网站视频教程朋友圈推广
  • 临沂企业建站效果好线上销售如何找到精准客户
  • 青岛做网站找哪家关键词排名技巧
  • 网站备案 拍照网点免费网站大全
  • 网站优化流程天津seo排名效果好
  • 个人网站设计论文ppt网站域名查询官网
  • 东莞五镇只进不出杭州seo整站优化
  • 网站如何做淘客百度推广助手电脑版
  • 自己怎么做VIP视频解网站快速建站教程
  • 海文考研培训班2023价格表百度seo排名优化软件化
  • 室内设计师招聘网站郑州短视频代运营公司
  • 怎么做网站才能吸引人google play 安卓下载
  • 重庆中环建设有限公司网站网络游戏推广
  • 网站空间香港宁波seo在线优化
  • 怎样制作网站积分系统广东网站se0优化公司
  • 网站汉英结合的怎么做杭州seo服务公司
  • asp网站后台管理系统下载广州seo排名外包
  • 网站如何合理建设seo百度学术免费查重入口
  • 接单做任务赚钱的网站百度竞价推广收费
  • 乌鲁木齐专业做网站优化设计五年级下册数学答案
  • 怎么用 java做网站重庆官网seo分析