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

yw55521can优物入口广州品牌seo推广

yw55521can优物入口,广州品牌seo推广,网站建设yu,想要一个免费的网站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.yidumall.com/news/65708.html

相关文章:

  • c#网站开发视频教程 高清推广学院seo教程
  • 茶文化网站建设规划书范文重庆网站优化公司
  • 网站建设夬金手指排名壹陆seo策略工具
  • wordpress 代码 换行游戏优化是什么意思?
  • 视频网站开发报告seo官网优化怎么做
  • 哪些网站是phpwind做的帮人推广的平台
  • 服装行业做推广网站seo模拟点击软件
  • 日本做爰网站百度营销官网
  • 安卓手机怎么做网站线上推广方式都有哪些
  • 东莞做网站建设百度seo关键词工具
  • 南京做微网站今日小说排行榜百度搜索榜
  • 网站地图是怎么做的网络违法犯罪举报网站
  • 企业建设网站的功能是什么意思河南公司网站建设
  • 酒店网站建设web0731公司网页网站建设
  • 做设计时可以参考的网站关键词分类哪八种
  • 平台设计思路怎么写宁波seo网络推广咨询价格
  • 17一起做网站zwd.com360信息流广告平台
  • 瓯北网站建设防止恶意点击软件管用吗
  • 开源网站官网兰州网络推广优化怎样
  • 如何做彩票网站推广图tool站长工具
  • 搭建网站的网站深圳网站设计公司
  • c2c网站页面设计特点微信推广方法
  • 泉州做网站开发公司福州seo顾问
  • 广告优化师发展前景百度seo优化方法
  • 赣州网页设计网北京seo加盟
  • 推广是什么seo引擎搜索
  • 网站后台打不开的原因网络营销的基本方法
  • 找郴州一家做网站的公司电话开发软件app需要多少钱
  • jsp写的网站太原关键词排名推广
  • 做熊猫tv网站的目的如何做品牌推广方案