`

java.util.concurrent 线程安全类

    博客分类:
  • java
阅读更多

线程安全map:

ConcurrentHashMap

线程安全set:

ConcurrentSkipListSet

1、ConcurrentSkipListSet<E>: 
 
 *  关于ConcurrentSkipListSet<E>在jdk的API的文档说明: 
 *      1)ConcurrentSkipListSet<E>是jdk6新增的类,位于java.util.concurrent并发库下; 
 *  
 *      2)ConcurrentSkipListSet<E>和TreeSet一样,都是支持自然排序,并且可以在构造的时候定义Comparator<E> 
 *      的比较器,该类的方法基本和TreeSet中方法一样(方法签名一样); 
 *  
 *      3)和其他的Set集合一样,ConcurrentSkipListSet<E>都是基于Map集合的,ConcurrentSkipListMap便是它的底层实现; 
 *  
 *      4)在多线程的环境下,ConcurrentSkipListSet<E>中的contains、add、remove操作是安全的,多个线程可以安全地并发 
 *      执行插入、移除和访问操作。但是对于批量操作 addAll、removeAll、retainAll 和 containsAll并不能保证以原子方式执行, 
 *      理由很简单,因为addAll、removeAll、retainAll底层调用的还是contains、add、remove的方法,在批量操作时,只能保证 
 *      每一次的contains、add、remove的操作是原子性的(即在进行contains、add、remove三个操作时,不会被其他线程打断),而 
 *      不能保证每一次批量的操作都不会被其他线程打断。      
 *      5)此类不允许使用 null 元素,因为无法可靠地将 null 参数及返回值与不存在的元素区分开来。

 

CopyOnWriteArraySet

CopyOnWriteArraySet<E>: 
 *      1)它最适合于具有以下特征的应用程序:set 大小通常保持很小,只读操作远多于可变操作,需要在遍历期间防止线程间的冲突。  
 *      2)它是线程安全的, 底层的实现是CopyOnWriteArrayList;   
 *      3)因为通常需要复制整个基础数组,所以可变操作(add、set 和 remove 等等)的开销很大。  
 *      4)迭代器不支持可变 remove 操作。  
 *      5)使用迭代器进行遍历的速度很快,并且不会与其他线程发生冲突。在构造迭代器时,迭代器依赖于不变的数组快照。 

 

 

分享到:
评论

相关推荐

    java.util.concurrent 学习ppt

    除了线程池,Java.util.concurrent还包含了一系列的并发工具类,如: 1. **Lock**:提供比`synchronized`更细粒度的锁控制,比如ReentrantLock,支持公平锁、非公平锁、可中断锁以及读写锁。 2. **Semaphore**:...

    java.util.concurrent系列文章(1)

    本篇文章将深入探讨 `java.util.concurrent` 包中的一些核心概念和技术,特别是 `ConcurrentHashMap` 和 `CopyOnWriteArrayList` 这两个集合类。 #### 二、线程安全问题概述 线程安全性是指在多线程环境中,代码...

    The java.util.concurrent Synchronizer Framework

    Java平台在J2SE 1.5版本中引入了`java.util.concurrent`包,这是一系列中等层次的并发支持类集合,通过Java社区过程(Java Community Process, JCP)的Java规范请求(Java Specification Request, JSR)166创建而成...

    java.util.concurrent.uml.pdf

    描述中提到了“Java并发编程工具包java.util.concurrent的UML类结构图 PDF”,这强调了文件是一个图表,它可能包括并发包中的线程安全集合、同步器、线程池、执行器等核心组件的类图和接口图。 标签“Java ...

    java多线程学习-java.util.concurrent详解(一) Latch/Barrier

    `java.util.concurrent`包是Java提供的一个强大的多线程工具库,其中包含了许多类和接口,如`CountDownLatch`和`CyclicBarrier`,它们为程序员提供了更高级别的同步和协调机制。这篇文档将详细解析这两个工具类的...

    深入Synchronized和java.util.concurrent.locks.Lock的区别详解

    如果不使用静态synchronized方法或Lock,可能会导致线程安全问题,因为线程可能在另一个线程保存user之前改变其值。通过将add方法声明为静态synchronized或使用Lock,可以确保在多线程环境下对user的修改是同步的。 ...

    java并发工具包 java.util.concurrent中文版-带书签版

    3. **并发集合**:Java并发工具包提供了一系列线程安全的集合类,如`ConcurrentHashMap`、`CopyOnWriteArrayList`和`ConcurrentLinkedQueue`。这些集合类在多线程环境下可以避免同步锁的开销,提高性能。 4. **原子...

    java_util_concurrent中文版pdf

    《Java Util Concurrent中文版》是Java并发编程领域的重要参考资料,主要涵盖了Java标准库中的`java.util.concurrent`包及其相关类和接口。这个包是Java多线程编程的核心,提供了高效、安全的并发工具,帮助开发者...

    java.util.concurrent 测试源文件

    Java.util.concurrent(JUC)是Java平台中的一个核心包,专门用于处理多线程并发问题。这个包包含了大量的工具类和接口,极大地简化了并发编程的复杂性,提高了程序的性能和可伸缩性。本测试源文件主要是针对JUC并发...

    java.util.vector中vector小结

    在Java编程语言中,`java.util.Vector`是一个重要的集合类,它是`ArrayList`的早期版本,提供了线程安全的动态数组实现。这篇文章将对`Vector`类进行详细的总结,包括其特点、用法以及与`ArrayList`的区别。 1. **...

    java.util.concurrent介绍(重要).pdf

    总之,`java.util.concurrent` 提供的工具使得并发编程变得更加容易和高效,是 Java 并发编程的基石,无论是对于初学者还是经验丰富的开发者,理解和掌握这个包都是非常重要的。通过熟练运用这些工具,开发者可以...

    Java并发工具包java.util.concurrent用户指南中英文对照阅读版pdf

    Java并发工具包java.util.concurrent是Java平台在Java 5版本中引入的一组新的并发编程类库,旨在帮助Java开发者更容易地实现复杂的并发程序。这一包的出现,极大地简化了开发者在处理线程和数据同步时所遇到的难题,...

    java.util.concurrent系列文章(2)

    本文将继续深入到 `java.util.concurrent` 包中的 `ConcurrentHashMap` 类,它是在不牺牲线程安全性的情况下提供高并发性的优秀示例。 #### 二、针对吞吐量进行优化 **1. 多个写锁** - **背景**:传统的 `...

    atlassian-util-concurrent-0.0.12.jar.zip

    - 使用库中的并发容器,而不是直接使用非线程安全的Java集合类。 - 充分利用提供的锁和同步工具,避免手动实现复杂的同步逻辑。 - 定期检查和监控线程池状态,确保系统稳定运行。 总结起来,`atlassian-util-...

    关于 java.util.concurrent 您不知道的 5 件事,第 2 部分

    在Java编程领域,`java.util.concurrent`包是并发编程的核心工具包,提供了高效、线程安全的类和接口,使得开发者能够更容易地处理多线程环境。本篇将深入探讨这个包中一些鲜为人知的知识点,以帮助你提升并发编程的...

    java Thread & synchronized & concurrent 线程、同步、并发

    此外,`java.util.concurrent`包下的`ConcurrentHashMap`、`CopyOnWriteArrayList`等容器类,为并发编程提供了线程安全的数据结构。 在`DaemonThreadTest.java`这个文件中,可能涉及到了Java的守护线程(Daemon ...

    出现java.util.ConcurrentModificationException 问题及解决办法

    通过使用正确的数据结构、同步机制或者线程安全的集合,可以有效地避免`java.util.ConcurrentModificationException`,保证代码的稳定性和可靠性。在实践中,应始终考虑并发控制和线程安全,特别是在处理共享资源时...

    J.U.C系列线程安全的理论讲解编程开发技术共6页.pdf

    2. **`java.util.concurrent.atomic`包**:提供了原子变量类,如`AtomicInteger`、`AtomicLong`等,这些类的更新操作是线程安全的,无需额外的同步措施。 3. **`java.util.concurrent.locks`包**:包含锁和条件变量...

    JBuider第七章:Java.util包.rar

    Java.util.concurrent包(虽然不是直接在Java.util下,但密切相关)包含了一系列线程安全的数据结构和并发工具,如Semaphore、ExecutorService、CountDownLatch等,极大地简化了多线程编程。 8. **枚举Set**: ...

Global site tag (gtag.js) - Google Analytics