`
xiao景天
  • 浏览: 2882 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

集合包在单线程和多线程下的性能总结

阅读更多
集合工具类比较包含:ArrayList,LinkedList,Vector,Stack,HashSet,TreeSet,HashMap,TreeMap。

单线程下:
    增加元素:ArrayList性能相对较差,需要扩容(复制数组影响效率Vector也如此),随着元素数量的增加,TreeMap和TreeSet的性能下降比较明显,其他几个变化不是很明显。

    查找元素:几个List,Vector,Stack性能相对差一些(由于查找需要遍历整个集合),而且随着元素数量的增加,下降非常明显,而Set、Map都是通过hash后再到链表上查找,因此速度会更快些,效率基本变化不大。
   
    删除元素:TreeSet和TreeMap性能较差(原因是删除时需要排序),随着元素数量的增加,几个List实现类性能下降非常明显(和查找一样要遍历整个集合)。

    总结:单线程下,当元素数量增加后,增加元素除了ArrayList、Vector扩容影响较大,其他基本无变化。在查找、删除元素上,几个List的实现性能下降较为严重,Set,Map的实现则基本不会受元素数量的影响。对于查找和删除较为频繁,且元素数量较多的应用,Set,Map是更好的选择。

多线程下:
   
    相同元素数不同线程数:各集合类的性能下降非常明显,并且随着线程数的增加,下降的就越多。相对而言,Set和Map的实现表现较好一些,linkedList表现稍差。
   
分享到:
评论

相关推荐

    VB单元线程模型实现多线程

    在VB(Visual Basic)编程环境中,多线程是一种高级编程技术,它允许程序同时执行多个独立的任务,从而提高应用程序的效率和响应性。本项目"VB单元线程模型实现多线程"提供了一个简单的测试工程,帮助开发者了解如何...

    Java多线程运算集合

    ### Java多线程运算集合知识点解析 #### 一、Java多线程概念与原理 - **操作系统中的线程与进程**: - **进程**:指的是一个正在运行的应用程序,每个进程都拥有独立的内存空间。 - **线程**:是进程中的一个...

    Java多线程的总结

    多线程允许程序同时执行多个任务,提高了系统资源的利用率,提升了应用程序的响应速度和并发性能。对于大型分布式系统、Web应用以及任何需要处理大量并发请求的服务来说,深入理解和熟练掌握Java多线程是必要的。 ...

    单线程多路复用(异步通信)

    ### 单线程多路复用(异步通信) #### 实验目的 - 理解I/O多路复用技术的基本原理及其在服务器编程中的应用。 - 掌握基于单线程并发模型下的服务器程序设计及实现。 #### 实验环境配置 - 操作系统:Ubuntu 8.04 #...

    多线程资源共享集合

    本文将深入探讨多线程环境下如何管理和控制资源共享,主要关注`synchronized`关键字、`Runnable`接口以及`Thread`类的使用。 首先,让我们了解什么是多线程。多线程是指在一个进程中同时执行多个线程,每个线程都有...

    C#多线程List的非线程安全性

    2. 使用线程安全的集合:.NET框架提供了线程安全的集合类,如ConcurrentBag、ConcurrentQueue和ConcurrentStack等,它们在内部实现了线程同步,可以安全地在多线程环境下使用。 3. 避免在多线程环境中直接修改List...

    Windows平台下的多线程编程

    在计算机科学领域,多线程编程被视为提升软件性能和响应能力的关键技术之一。尤其在Windows平台上,多线程编程能够充分利用现代多核处理器的能力,实现并发处理,从而显著提高程序的执行效率。本文将重点围绕...

    第17章 - 深入研究容器 - Collection(List,Set,Queue)的性能测试框架(单线程中)(P501)

    在深入研究Java集合框架,特别是List、Set和Queue的性能测试时,我们通常会关注它们在单线程环境中的表现。这些容器是Java编程中不可或缺的一部分,用于存储和管理对象。本章将探讨如何构建一个性能测试框架来比较...

    java多线程的讲解和实战

    Java多线程是Java编程中的重要概念,尤其在如今的多核处理器环境下,理解并熟练掌握多线程技术对于提高程序性能和响应速度至关重要。本资料详细讲解了Java多线程的原理,并提供了丰富的实战代码,非常适合Java初学者...

    多线程集合及IO面试

    ### 多线程集合及IO面试知识点概览 #### 逻辑思考题解析 1. **果冻颜色问题**: - 这是一个经典的抽屉原理(鸽巢原理)的应用问题。根据题意,桶里有黄色、绿色和红色三种颜色的果冻。如果随机抓取果冻,为了确保...

    C#编写多线程搜索引擎

    在IT领域,多线程是提高程序...总结来说,"C#编写多线程搜索引擎"项目展示了如何在C#环境中利用多线程技术提高搜索引擎的性能和响应速度。通过合理地设计和实现多线程架构,我们可以创建出高效、可靠的搜索引擎应用。

    redis面试题之单线程.zip

    总结,Redis的单线程模型是其独特设计的一部分,它带来了性能上的优势,但也需要开发者在使用时注意优化策略,以应对并发和计算性能的需求。了解和掌握这些知识点,对于面试和实际工作都有很大的帮助。

    精通java多线程

    Java的并发集合库(java.util.concurrent包)提供了线程安全的集合类,如ConcurrentHashMap、CopyOnWriteArrayList和ConcurrentLinkedQueue等,它们在多线程环境下能确保数据的一致性和安全性。 十、异常处理 在多...

    java多线程并发及集合框架面试题

    5. **性能考虑**:对比 HashMap 和 ConcurrentHashMap 在单线程和多线程环境下的性能表现,理解在性能和线程安全之间如何权衡。 理解并掌握这些知识点,对于成为一名优秀的 Java 开发人员至关重要,特别是在设计和...

    java多线程设计

    总结,Java多线程设计是构建高性能、高并发应用的基础。通过理解并合理使用不可变对象,我们可以有效预防多线程环境中的非安全问题,确保程序的稳定性和正确性。在实际开发中,结合各种线程同步机制和并发工具,可以...

    java多线程设计模式_java_设计模式_多线程_多线程课题_

    Java提供了一些线程安全的集合类,如ConcurrentHashMap、CopyOnWriteArrayList和CopyOnWriteArraySet,它们在多线程环境下提供了高并发的访问性能。 九、死锁检测与避免 死锁是多线程编程中的常见问题,两个或多个...

    多线程和并行程序设计

    总结起来,多线程和并行程序设计涉及到的关键知识点包括线程的创建、线程的生命周期管理、任务调度、线程安全和并发控制以及使用Java提供的高级并发工具等。在开发过程中,开发者需要综合考虑这些因素,设计出高效、...

    vc 多线程集合,调用,参数传递

    标题和描述提及的“vc 多线程集合,调用,参数传递”主要涵盖了如何在Microsoft Visual C++ (VC++)环境中创建和管理多线程,以及如何在不同线程之间传递参数。 多线程的引入是为了解决单线程程序在执行长时间任务时...

    多线程中使用Java集合类.doc

    在多线程环境中,使用Java集合类需要注意线程安全问题,因为不同的线程可能会同时访问和修改集合,导致数据不一致或引发异常。本篇主要讨论在并发编程中使用Java集合类的一些关键知识点。 首先,Java集合框架中的大...

Global site tag (gtag.js) - Google Analytics