引言
前面使用了大量的章节对线程、Java内存模型、synchronized锁等进行了详细的介绍,同时也清楚了其实大部分的内容都是在围绕着并发过程中的原子性、可见性和有序性进行探讨,除了synchronized这样的隐式锁,前文还提到Lock对象支持的显式锁同样能够对这三大特征进行支持。从本章节开始,我们将致力于对Lock对象显式锁的探讨。
Lock对象显式锁其实是Java并发包(java.util.concurrent)中的重要内容,它是J2EE5.0之后才引入的。其相对于synchronized隐式锁更加强大与灵活,并且对锁的操作花费的代价更低。要想在并发开发过程中做到游刃有余,对这部分内容的掌握不可或缺。
为了能够对这部分的内容能够有较深入的了解,接下来的章节将会由最底层的基础元件开始介绍学习,只有对这些最底层的基础单元有了理解,才能在使用上层API的时候做到心里有数,而不是知其然不知其所以然。关于Java并发包(java.util.concurrent)又可以简称为JUC,可以分为以下几个部分,后文也将按照这样的顺序进行学习。
- Java并发包基础元件:sun.misc.Unsafe类、LockSupport
- Java并发包核心框架:AbstractQueuedSynchronizer、Condition接口、Lock接口
- Java并发包同步组件:ReentrantLock、CylicBarrer、Semaphore、CountDownLatch、ReadWriteLock/ReentrantReadWriteLock、StampedLock
- 同步数据结构之原子类:AtomicInteger、AtomicBoolean、AtomicLong、AtomicReference等
- 同步工具类:Phaser、Exchanger、ThreadLocalRandom
- 同步数据结构之Queue类:BlockingQueue接口、ArrayBlockingQueue、LinkedBlockingQueue、ConcurrentLinkedQueue、LinkedTransferQueue、PriorityBlockingQueue、DelayQueue、SynchronousQueue
- 同步数据结构之Deque类:BlockingDeque接口、ConcurrentLinkedDeque、LinkedBlockingDeque
- 同步数据结构之List类:CopyOnWriteArrayList
- 同步数据结构之Set类:CopyOnWriteArraySet、ConcurrentSkipListSet
- 同步数据结构之Map类:ConcurrentMap接口、ConcurrentHashMap、ConcurrentNavigableMap、ConcurrentSkipListMap
- 线程池:Executor、ExecutorService、ExecutorCompletionService、Executors、ScheduledThreadPoolExecutor
- fork/join:ForkJoinPool、ForkJoinTask、ForkJoinWorkerThread等
除了第一个基础类sun.misc.Unsafe,其他所有的内容都是出自java.util.concurrent包及其子包下。
相关推荐
`java.util.concurrent`包是Java标准库中专门用于并发编程的模块,它包含了各种线程安全的数据结构、同步机制和执行模型。这个包的引入极大地简化了并发编程的复杂性,提供了一套高效且易用的并发工具。 **3.2 ...
除此之外,Java的并发包`java.util.concurrent`提供了更高级的线程同步工具,如Semaphore(信号量)用于控制同时访问特定资源的线程数量,CyclicBarrier(循环屏障)允许一组线程等待彼此到达某个点后再继续执行,...
13. **并发工具类**:Java并发包(java.util.concurrent)包含了很多高级并发工具,如ExecutorService、Semaphore、CountDownLatch等。 14. **国际化**:Java提供了Locale和ResourceBundle类,支持多语言环境下的...
2. **并发包**:如`java.util.concurrent`,包含线程安全的数据结构和并发工具类。 3. **网络包**:如`java.net`,处理网络通信和套接字。 4. **模块系统相关的包**:如`java.module`,用于模块化系统的API。 5. ...
Java并发包`java.util.concurrent`提供了许多高级工具类来帮助开发者更好地管理并发任务,如`ExecutorService`、`Future`、`Semaphore`、`CountDownLatch`等。这些工具类极大地简化了并发编程的难度,并提高了程序的...
3. **第三章:并发工具类** - 本章可能会详细介绍Java并发包(java.util.concurrent)中的工具类,如ExecutorService、Future、Callable、Semaphore、CyclicBarrier、CountDownLatch等,这些工具极大地简化了并发...
4. 并发包:分析java.util.concurrent中的并发工具类,如ConcurrentHashMap、ThreadPoolExecutor、FutureTask、Semaphore、Condition、ReentrantReadWriteLock等。 5. JVM:深入理解JVM的工作机制,包括代码的编译、...
10. **并发工具**:Java并发包(java.util.concurrent)提供了许多高级并发工具,如ExecutorService、Semaphore、CountDownLatch等,用于构建高性能并发程序。 11. **JavaBeans和事件模型**:JavaBeans规范定义了一...
`ConcurrentLinkedQueue` 是 Java 并发包 `java.util.concurrent` 提供的一个高性能的线程安全队列实现,基于链表结构,它适用于对吞吐量有较高要求的场景。`ConcurrentLinkedQueue` 不提供容量限制,并且在队列为空...
6. `java.concurrent`:并发包,提供了多线程编程的支持,如Thread、ExecutorService、Future等。 三、Java SDK 1.6的新特性 1. 改进的泛型:引入了类型注解,增强了泛型的类型安全性。 2. 遗留的数组注解:允许...
- 并发工具类:了解并发包(java.util.concurrent)中的高级工具类,如ExecutorService、CountDownLatch等。 #### 三、Java高级篇 1. **网络编程**: - Socket编程:Socket是网络通信的基础,掌握TCP/IP和UDP...
- **并发工具类**:Java并发包(`java.util.concurrent`)提供了大量工具类,如`Future`、`Callable`等,用于处理异步计算结果;`AtomicInteger`、`AtomicLong`等原子类用于实现高效的线程安全的整数操作;`...
在JDK1.7中,增加了对try-with-resources语句的支持,改进了并发包java.util.concurrent,并增强了File API。 3. **javax包**:这个包通常包含了Java扩展API,如Swing组件、JavaMail、JAXP(Java API for XML ...
Java 8对并发包 `java.util.concurrent` 进行了一系列改进,提高了线程池和其他并发工具的性能,并新增了一些实用的并发类,如 `CompletableFuture`,用于简化异步编程。 ##### 6. 类型推断 在Java 8中,类型推断...
Doug Lea是纽约州立大学奥斯威戈分校的一名教授,同时也是Java并发包(java.util.concurrent)的主要贡献者之一。本次演讲深入探讨了可扩展网络服务的设计、事件驱动处理以及反应器模式等内容,并通过实例讲解了Java...