深入浅出 Java Concurrency - 目录 [转]

这是一份完整的Java 并发整理笔记,记录了我最近几年学习Java并发的一些心得和体会。

  1. J.U.C 整体认识
  2. 原子操作 part 1 从AtomicInteger开始
  3. 原子操作 part 2 数组、引用的原子操作
  4. 原子操作 part 3 指令重排序与happens-before法则
  5. 原子操作 part 4 CAS操作
  6. 锁机制 part 1 Lock与ReentrantLock
  7. 锁机制 part 2 AQS
  8. 锁机制 part 3 加锁的原理 (Lock.lock)
  9. 锁机制 part 4 锁释放与条件变量 (Lock.unlock And Condition)
  10. 锁机制 part 5 闭锁 (CountDownLatch)
  11. 锁机制 part 6 CyclicBarrier
  12. 锁机制 part 7 信号量 (Semaphore)
  13. 锁机制 part 8 读写锁 (ReentrantReadWriteLock) (1)
  14. 锁机制 part 9 读写锁 (ReentrantReadWriteLock) (2)
  15. 锁机制 part 10 锁的一些其它问题
  16. 并发容器 part 1 ConcurrentMap (1)
  17. 并发容器 part 2 ConcurrentMap (2)
  18. 并发容器 part 3 ConcurrentMap (3)
  19. 并发容器 part 4 并发队列与Queue简介
  20. 并发容器 part 5 ConcurrentLinkedQueue
  21. 并发容器 part 6 可阻塞的BlockingQueue (1)
  22. 并发容器 part 7 可阻塞的BlockingQueue (2)
  23. 并发容器 part 8 可阻塞的BlockingQueue (3)
  24. 并发容器 part 9 双向队列集合 Deque
  25. 并发容器 part 10 双向并发阻塞队列 BlockingDeque
  26. 并发容器 part 11 Exchanger
  27. 并发容器 part 12 线程安全的List/Set CopyOnWriteArrayList/CopyOnWriteArraySet
  28. 线程池 part 1 简介
  29. 线程池 part 2 Executor 以及Executors
  30. 线程池 part 3 Executor 生命周期
  31. 线程池 part 4 线程池任务拒绝策略
  32. 线程池 part 5 周期性任务调度
  33. 线程池 part 6 线程池的实现及原理 (1)
  34. 线程池 part 7 线程池的实现及原理 (2)
  35. 线程池 part 8 线程池的实现及原理 (3)
  36. 线程池 part 9 并发操作异常体系
  37. 并发总结 part 1 死锁与活跃度
  38. 并发总结 part 2 常见的并发场景
  39. 并发总结 part 3 常见的并发陷阱
  40. 并发总结 part 4  性能与伸缩性
  41. 捕获Java线程池执行任务抛出的异常
时间: 2024-10-22 19:00:15

深入浅出 Java Concurrency - 目录 [转]的相关文章

深入浅出 Java Concurrency (17): 并发容器 part 2 ConcurrentMap (2)

本来想比较全面和深入的谈谈ConcurrentHashMap的,发现网上有很多对HashMap和ConcurrentHashMap分析的文章,因此本小节尽可能的分析其中的细节,少一点理论的东西,多谈谈内部设计的原理和思想. 要谈ConcurrentHashMap的构造,就不得不谈HashMap的构造,因此先从HashMap开始简单介绍. HashMap原理 我们从头开始设想.要将对象存放在一起,如何设计这个容器.目前只有两条路可以走,一种是采用分格技术,每一个对象存放于一个格子中,这样通过对格子

深入浅出 Java Concurrency (35): 线程池 part 8 线程池的实现及原理 (3)[转]

线程池任务执行结果 这一节来探讨下线程池中任务执行的结果以及如何阻塞线程.取消任务等等. 1 package info.imxylz.study.concurrency.future;2 3 public class SleepForResultDemo implements Runnable {4 5     static boolean result = false;6 7     static void sleepWhile(long ms) {8         try {9      

深入浅出 Java Concurrency (33): 线程池 part 6 线程池的实现及原理 (1)[转]

线程池数据结构与线程构造方法 由于已经看到了ThreadPoolExecutor的源码,因此很容易就看到了ThreadPoolExecutor线程池的数据结构.图1描述了这种数据结构. 图1 ThreadPoolExecutor 数据结构 其实,即使没有上述图形描述ThreadPoolExecutor的数据结构,我们根据线程池的要求也很能够猜测出其数据结构出来. 线程池需要支持多个线程并发执行,因此有一个线程集合Collection<Thread>来执行线程任务: 涉及任务的异步执行,因此需要

深入浅出 Java Concurrency (28): 线程池 part 1 简介[转]

从这一节开始正式进入线程池的部分.其实整个体系已经拖了很长的时间,因此后面的章节会加快速度,甚至只是一个半成品或者简单化,以后有时间的慢慢补充.完善. 其实线程池是并发包里面很重要的一部分,在实际情况中也是使用很多的一个重要组件. 下图描述的是线程池API的一部分.广义上的完整线程池可能还包括Thread/Runnable.Timer/TimerTask等部分.这里只介绍主要的和高级的API以及架构和原理. 大多数并发应用程序是围绕执行任务(Task)进行管理的.所谓任务就是抽象.离散的工作单元

深入浅出 Java Concurrency (34): 线程池 part 7 线程池的实现及原理 (2)[转]

线程池任务执行流程 我们从一个API开始接触Executor是如何处理任务队列的. java.util.concurrent.Executor.execute(Runnable) Executes the given task sometime in the future. The task may execute in a new thread or in an existing pooled thread. If the task cannot be submitted for execut

深入浅出 Java Concurrency (15): 锁机制 part 10 锁的一些其它问题[转]

主要谈谈锁的性能以及其它一些理论知识,内容主要的出处是<Java Concurrency in Practice>,结合自己的理解和实际应用对锁机制进行一个小小的总结. 首先需要强调的一点是:所有锁(包括内置锁和高级锁)都是有性能消耗的,也就是说在高并发的情况下,由于锁机制带来的上下文切换.资源同步等消耗是非常可观的.在某些极端情况下,线程在锁上的消耗可能比线程本身的消耗还要多.所以如果可能的话,在任何情况下都尽量少用锁,如果不可避免那么采用非阻塞算法是一个不错的解决方案,但是却也不是绝对的.

深入浅出 Java Concurrency (4): 原子操作 part 3 指令重排序与happens-before法则[转]

在这个小结里面重点讨论原子操作的原理和设计思想. 由于在下一个章节中会谈到锁机制,因此此小节中会适当引入锁的概念. 在Java Concurrency in Practice中是这样定义线程安全的: 当多个线程访问一个类时,如果不用考虑这些线程在运行时环境下的调度和交替运行,并且不需要额外的同步及在调用方代码不必做其他的协调,这个类的行为仍然是正确的,那么这个类就是线程安全的. 显然只有资源竞争时才会导致线程不安全,因此无状态对象永远是线程安全的. 原子操作的描述是: 多个线程执行一个操作时,其

深入浅出 Java Concurrency (4): 原子操作 part 3 指令重排序与happens-before法则

转: http://www.blogjava.net/xylz/archive/2010/07/03/325168.html 在这个小结里面重点讨论原子操作的原理和设计思想. 由于在下一个章节中会谈到锁机制,因此此小节中会适当引入锁的概念. 在Java Concurrency in Practice中是这样定义线程安全的: 当多个线程访问一个类时,如果不用考虑这些线程在运行时环境下的调度和交替运行,并且不需要额外的同步及在调用方代码不必做其他的协调,这个类的行为仍然是正确的,那么这个类就是线程安

深入浅出 Java Concurrency (一) ----原子操作

[-] part1 从AtomicInteger开始 part 2 数组引用的原子操作 part3 指令重排序与happens-before法则 part 4 CAS操作 part1 从AtomicInteger开始 从相对简单的Atomic入手(java.util.concurrent是基于Queue的并发包,而Queue,很多情况下使用到了Atomic操作,因此首先从这里开始).很多情况下我们只是需要一个简单的.高效的.线程安全的递增递减方案.注意,这里有三个条件:简单,意味着程序员尽可能少