java.util.concurrent包源码阅读(一) 源码包的结构

准备花点时间阅读一下java.util.concurrent这个包里面的java代码,大致看了一下,这个包我个人觉得大致可以分为五个部分(如有不对之处,还望指正)

第一部分 Aomic数据类型

这部分都被放在java.util.concurrent.atomic这个包里面,实现了原子化操作的数据类型,包括 Boolean, Integer, Long, 和Referrence这四种类型以及这四种类型的数组类型。

第二部分 锁

这部分都被放在java.util.concurrent.lock这个包里面,实现了并发操作中的几种类型的锁

第三部分 java集合框架中的一些数据结构的并发实现

这部分实现的数据结构主要有List, Queue和Map。

第四部分 多线程任务执行

这部分大体上涉及到三个概念,

Callable     被执行的任务

Executor  执行任务

Future      异步提交任务的返回数据

第五部分 线程管理类

这部分主要是对线程集合的管理的实现,有CyclicBarrier, CountDownLatch,Exchanger等一些类

以上就是对这个包的结构的粗略分析,接下来会一个部分一个部分地阅读java代码,顺便在这里写些心得和体会与诸位分享。

作者:cnblogs 梧留柒

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/Java/

时间: 2024-09-10 14:12:35

java.util.concurrent包源码阅读(一) 源码包的结构的相关文章

java.util.concurrent包源码阅读(二) java.util.concurrent.atomic包

Aomic数据类型有四种类型:AomicBoolean, AomicInteger, AomicLong, 和AomicReferrence(针对Object的)以及它们的数组类型, 还有一个特殊的AomicStampedReferrence,它不是AomicReferrence的子类,而是利用AomicReferrence实现的一个储存引用和Integer组的扩展类 首先,所有原子操作都是依赖于sun.misc.Unsafe这个类,这个类底层是由C++实现的,利用指针来实现数据操作 关于CAS

为什么java.util.concurrent 包里没有并发的ArrayList实现?

原文链接 作者:Stephen C 译者:郑旭东  校对:方腾飞 问:JDK 5在java.util.concurrent里引入了ConcurrentHashMap,在需要支持高并发的场景,我们可以使用它代替HashMap.但是为什么没有ArrayList的并发实现呢?难道在多线程场景下我们只有Vector这一种线程安全的数组实现可以选择么?为什么在java.util.concurrent 没有一个类可以代替Vector呢? 答:我认为在java.util.concurrent包中没有加入并发的

为什么java.util.concurrent 包里没有并发的ArrayList实现

原文链接 作者:Stephen C 译者:郑旭东  校对:方腾飞 问:JDK 5在java.util.concurrent里引入了ConcurrentHashMap,在需要支持高并发的场景,我们可以使用它代替HashMap.但是为什么没有ArrayList的并发实现呢?难道在多线程场景下我们只有Vector这一种线程安全的数组实现可以选择么?为什么在java.util.concurrent 没有一个类可以代替Vector呢? 答:我认为在java.util.concurrent包中没有加入并发的

java.util.concurrent包(1)——lock和synchronized对比

一.对synchronized的改进 JDK5后引入了线程并发库java.util.concurrent.JSR 166小组花了这么多时间来开发java.util.concurrent.lock框架呢?答案很简单--synchronized同步是不错,但它并不完美,有一些功能性的限制:无法中断一个正在等候获得锁的线程,也无法通过投票得到锁,如果不想等下去也就没法得到锁.同步还要求锁的释放只能在与获得锁所在的堆栈帧相同的堆栈帧中进行,多数情况下这没问题,而且与异常处理交互得很好,但确实存在一些非块

java.util.concurrent包(4)——读写锁ReentrantReadWriteLock

读读之间不互斥,但读写之间,写写之间互斥.提高了效率保证了安全. import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; public class MyQueue {// 共享数据.该数据只能被一个线程写,可以被多个线程同时读private Object data;// 读读之间不互斥,但读写之间,写写之间互斥ReadWriteLock r

java.util.concurrent包(2)——线程池

一.概述 java.util.concurrent中有非常方便的线程池实现,提供的Executor框架包含用于管理实现Runnable任务,Executors类提供了许多不同类型的Executor实现的静态工厂方法. 二.实例 public class MyTask implements Runnable {public void run(){System.out.println(Thread.currentThread().getName() + "任务正在运行");} } ①固定大

java.util.concurrent解析——AbstractQueuedSynchronizer综述

尽管JVM在并发上已经做了很多优化工作,如偏向锁.轻量级锁.自旋锁等等.但是基于Synchronized wait notify实现的同步机制还是无法满足日常开发中.原生同步机制在时间和空间上的开销也一直备受诟病.为了提升Java程序在并发场景下的性能.扩展性和健壮性,java.util.concurrent的使用必不可少.java.util.concurrent 包含许多线程安全.测试良好.高性能的并发构建块.通过使用java.util.concurrent,开发人员可以提高并发类的线程安全.

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

通过并发 Collections 进行多线程编程 Concurrent Collections 是 Java 5 的巨大附加产品,但是在关于注释和泛型的争 执中很多 Java 开发人员忽视了它们.此外(或者更老实地说),许多开发人员避免使用这个 数据包,因为他们认为它一定很复杂,就像它所要解决的问题一样. 事实上,java.util.concurrent 包含许多类,能够有效解决普通的并发问题,无需复杂工 序.阅读本文,了解 java.util.concurrent 类,比如 CopyOnWri

java.util.concurrent.locks.LockSupport

要学习JAVA中是如何实现线程间的锁,就得从LockSupport这个类先说起,因为这个类实现了底层的一些方法,各种的锁实现都是这个基础上发展而来的.这个类方法很少,但理解起来需要花费一点时间,因为涉及了很多底层的知识,这些都是我们平时不关心的. 上源代码: package java.util.concurrent.locks; import java.util.concurrent.*; import sun.misc.Unsafe; public class LockSupport { pr