`

java 并发容器

    博客分类:
  • java
阅读更多
     在多线程的开发中经常会碰到数据的并发修改,并发存取,因此正确的使用不同的容器很关键,直接影响到数据的正确性。下面主要记录下三种重要的队列,以及一种非常使用的 双端队列 。

1、同步容器

       主要代表有Vector和Hashtable,以及Collections.synchronizedXxx等。


       锁的粒度为当前对象整体。


       迭代器是及时失败的,即在迭代的过程中发现被修改,就会抛出ConcurrentModificationException。

2、并发容器

       主要代表有ConcurrentHashMap、CopyOnWriteArrayList、ConcurrentSkipListMap、ConcurrentSkipListSet


       锁的粒度是分散的、细粒度的,即读和写是使用不同的锁。


       迭代器具有弱一致性,即可以容忍并发修改,不会抛出ConcurrentModificationException。

3、阻塞队列

        主要代表有LinkedBlockingQueue、ArrayBlockingQueue、PriorityBlockingQueue(Comparable,Comparator)、SynchronousQueue。


        提供了可阻塞的put和take方法,以及支持定时的offer和poll方法。


        适用于生产者、消费者模式(线程池和工作队列-Executor)


        同时也是同步容器

4、双端队列和工作密取

           主要代表有ArrayDeque和LinkedBlockingDeque。


           意义:正如阻塞队列适用于生产者消费者模式,双端队列同样适用与另一种模式,即工作密取。在生产者-消费者设计中,所有消费者共享一个工作队列, 而在工作密取中,每个消费者都有各自的双端队列。

                   如果一个消费者完成了自己双端队列中的全部工作,那么他就可以从其他消费者的双端队列末尾秘密的获取工作。具有更好的可伸缩性,这是因为工作者线程不会在单个共享的任务队列上发生竞争 。

                   在大多数时候,他们都只是访问自己的双端队列,从而极大的减少了竞争。当工作者线程需要访问另一个队列时,它会从队列的尾部而不是头部获取工作,因此进一步降低了队列上的竞争。


           适用于:网页爬虫等任务中
分享到:
评论

相关推荐

    java并发容器CopyOnWriteArrayList实现原理及源码分析

    Java并发容器CopyOnWriteArrayList实现原理及源码分析 Java并发容器CopyOnWriteArrayList是Java并发包中提供的一个并发容器,实现了线程安全且读操作无锁的ArrayList,写操作则通过创建底层数组的新副本来实现。...

    JAVA并发容器代码随读1

    Java并发容器是Java多线程编程中的重要工具,它们提供了高效、线程安全的数据结构,使得在并发环境下处理数据变得更加简单。在`java.util.concurrent`包中,有四种主要的并发容器类型:队列(BlockingQueue)、Map...

    并发容器的原理,7大并发容器详解、及使用场景

    并发容器位于 `java.util.concurrent` 包下,其中包含多种专门为多线程环境设计的容器。这些容器通常使用更精细的锁策略,如分段锁(Segment)、CAS(Compare and Swap)算法,以及 volatile 关键字,以提高并发性并...

    JAVA并发编程实践.pdf+高清版+目录 书籍源码

    此外,书中还介绍了Java并发容器,如ConcurrentHashMap、CopyOnWriteArrayList和BlockingQueue等,这些都是为并发环境设计的高效数据结构。它们在多线程环境下的性能和线程安全特性使得开发者能更方便地实现并发操作...

    13-Java并发编程学习宝典.zip

    —深入解析ConcurrentHashMap-慕课专栏.html" 和 "25 经典并发容器,多线程面试必备—深入解析ConcurrentHashMap下-慕课专栏.html":这两篇文章深入探讨了Java并发容器中的`ConcurrentHashMap`,它是线程安全的哈希...

    14个Java并发容器,你用过几个?.docx

    Java并发编程中,为了在多线程环境下保证数据的一致性和安全性,`java.util.concurrent`包提供了多种线程安全的容器。以下是对标题和描述中提及的一些并发容器的详细解释: 1. **ConcurrentHashMap**: 是线程安全的...

    java并发编程源码

    4. **Java并发容器** `jcip-examples-src.jar`可能包含Java并发编程实战中的各种容器示例,如`BlockingQueue`(阻塞队列)用于线程间的通信,`CopyOnWriteArrayList`和`CopyOnWriteArraySet`提供线程安全的集合操作...

    Java-并发容器之ConcurrentHashMap

    【Java并发容器之ConcurrentHashMap】是Java编程中用于高效并发操作的重要工具。相比于HashMap,ConcurrentHashMap在多线程环境下提供了线程安全的保证,避免了因扩容导致的CPU资源消耗过高问题。传统的线程安全解决...

    Java并发编程的艺术

    #### 六、Java并发容器的设计与实现 第六章专注于Java中的并发容器,这些容器被设计用来支持多线程环境下的高效数据访问。本章详细分析了ConcurrentHashMap、CopyOnWriteArrayList等容器的内部实现机制,揭示了它们...

    基于Java并发容器ConcurrentHashMap#put方法解析

    基于Java并发容器ConcurrentHashMap#put方法解析 Java并发容器ConcurrentHashMap是Java中最常用的数据结构之一,它的出现是为了解决HashMap在多线程并发环境下的线程不安全问题。在ConcurrentHashMap中,put方法是...

    Java并发容器,底层原理深入分析

    ConcurrentHashMapConcurrentHashMap底层具体实现JDK1.7底层实现将数据分为一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据时,其他段的数据也能被其他线程访问。...

    一本经典的多线程书籍 Java并发编程 设计原则与模式 第二版 (英文原版)

    3. **并发容器**:书中深入讨论了Java并发容器,如ArrayList、LinkedList、HashSet、HashMap以及并发优化过的ConcurrentHashMap、CopyOnWriteArrayList和CopyOnWriteArraySet等,以及它们在多线程环境下的性能和使用...

    Java从同步容器到并发容器的操作过程

    Java中的同步容器与并发容器是处理多线程环境下数据安全的重要工具。同步容器,如`Vector`和`HashTable`,通过在每个方法上添加`synchronized`关键字实现了线程安全,但这种方式存在性能瓶颈,因为每次操作都需要...

    Java 并发编程实战

    Java并发容器如ConcurrentHashMap、ConcurrentLinkedQueue、CopyOnWriteArrayList等是设计用于线程安全的数据结构。它们内部实现了高效的并发控制,可以在不加锁的情况下保证线程安全,提高了并发性能。 此外,Java...

    java并发编程内部分享PPT

    总的来说,这份“java并发编程内部分享PPT”涵盖了Java并发编程的多个重要方面,包括线程创建与管理、同步机制、并发容器、线程池、并发问题以及异步计算。通过深入学习和实践这些知识点,开发者可以更好地应对多...

    (PDF带目录)《Java 并发编程实战》,java并发实战,并发

    《Java 并发编程实战》是一本专注于Java并发编程的权威指南,对于任何希望深入了解Java多线程和并发控制机制的开发者来说,都是不可或缺的参考资料。这本书深入浅出地介绍了如何在Java环境中有效地管理和控制并发...

    java 并发编程的艺术

    Java并发容器和并发工具类是构建并发程序的常用组件,它们的设计和实现原理在第6章和第8章中得到了详细介绍。作者通过对ConcurrentHashMap、BlockingQueue等并发容器的分析,以及对CountDownLatch、CyclicBarrier、...

    JAVA并发编程实践

    5. **并发容器**:Java并发容器,如`ConcurrentHashMap`、`CopyOnWriteArrayList`和`ConcurrentSkipListMap`,设计用于在多线程环境中高效地操作数据结构。它们内部采用了高级并发策略,如分段锁和读写分离,提高了...

    Java并发编程实践高清pdf及源码

    3. **并发容器**:包括`ConcurrentHashMap`、`CopyOnWriteArrayList`和`BlockingQueue`等,这些容器在设计时考虑了并发性能,避免了线程同步的开销。 4. **线程池**:`ExecutorService`是Java并发框架的核心,它...

Global site tag (gtag.js) - Google Analytics