`
cesymm
  • 浏览: 29911 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

提高 java list 性能的方法,读写分离

 
阅读更多
做项目时,遇到这样一种需求。

比如每秒钟的并发记录为5000笔,大量的客户端每秒钟读取这5000笔,同时有一个线程后台每隔一秒,更新此记录。

很容易的想到先把这些记录加入到集合list中,然后其它客户端遍历集合list.

但会出现ConcurrentModificationException错误。

解决方式,如下几种。

1.如果在遍历时,加锁,这将严重影响并发性能。客户端或数据量越大,性能下降越厉害
2.ReadWriteLock读写分离锁,但也存在读写不能并发情况,只能读,与读并发。
3.采用CopyOnWriteArrayList,但由于每次的add时Arrays.copyof(),性能会受些影响,数据量越大,影响越明显
4.读写分离,引用的切换。会造成频繁的新生代垃圾回收。

如有更好的解决方案,欢迎指出!
分享到:
评论

相关推荐

    MyBatis多数据源读写分离.docx

    读写分离是指将数据库的读取和写入操作分离到不同的数据库服务器上,以提高系统的性能和可用性。读取操作通常来自从库,而写入操作通常来自主库。这样可以有效地减少主库的压力,提高系统的整体性能。 MyBatis多...

    PostgreSQL9.4.5使用pgpool实现读写分离和负载均衡

    ### PostgreSQL 9.4.5 使用 pgpool 实现读写分离和负载均衡 #### 一、实验原理 ...通过以上步骤,我们可以在 PostgreSQL 9.4.5 中利用 `pgpool-II` 实现读写分离和负载均衡,进一步提升数据库系统的性能和稳定性。

    使用sharding-jdbc实现读写分离和分库分表.zip

    Sharding-JDBC是一款轻量级的Java框架,它无需额外的中间件,可以直接嵌入到现有应用中,实现数据库的读写分离和分库分表功能。它的核心设计理念是"以数据库为中心",提供了一种透明化的数据访问层,使得应用程序...

    mysql+spring+mybatis实现数据库读写分离的代码配置

    MySQL+Spring+MyBatis实现数据库读写分离的代码配置 MySQL+Spring+MyBatis是目前常用的Java Web开发技术栈,分别负责数据库管理、框架支持和...这种方法可以提高数据库的性能和可扩展性,并且可以方便地实现读写分离。

    mongoDB 实现主从读写分离实现的实例代码

    MongoDB的主从读写分离是一种常见的数据库架构策略,它将数据读取操作分散到多个从节点上,而写入操作则集中在主节点上,以此提高系统的可用性和性能。在MongoDB中,虽然主从模式已被副本集(Replica Set)所取代,...

    java开源包6

    支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL...

    java开源包9

    支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL...

    java开源包4

    支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL...

    java开源包101

    支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL...

    java开源包5

    支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL...

    java开源包8

    支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL...

    java开源包10

    支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL...

    java源码包---java 源码 大量 实例

    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术,...

    java开源包1

    支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL...

    java开源包3

    支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL...

    JAVA基础爽啊真的啊

    在描述中提到的“快”可能是指Java的性能优化,比如通过JIT(Just-In-Time)编译器将字节码实时编译为机器码,提高运行效率。而“附件卡死”可能涉及到资源管理或者并发问题,如内存溢出或线程阻塞。不过,由于提供...

    Java中文参考手册.zip

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的库而闻名。这份"Java中文参考手册.zip"包含了全面的Java API规范和指南,是学习和开发Java应用程序的重要资源。API(Application Programming ...

    Java资源包01

    支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL...

    JAVA上百实例源码以及开源项目源代码

    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义...

    java 面试题库 一定有你需要的

    MyBatis则将SQL语句与Java代码分离,提高了代码的可读性。 9. **Spring Boot和Spring Cloud**:Spring Boot简化了Spring应用的初始设置,而Spring Cloud则为分布式系统的常见问题提供了开箱即用的解决方案,如服务...

Global site tag (gtag.js) - Google Analytics