对于人脑的认知来说,“代码一行行串行”当然最容易理解。但在多线程下,多个线程的代码交叉并行,要访问互斥资源,要互相通信。作为开发者,需要仔细设计线程之间的互斥与同步,稍不留心,就会写出非线程安全的代码。正因此,多线程编程一直是一个被广泛而深入讨论的领域! 今天就来分享一份饿了么架构师纯手打的Java并发实现原理:JDK源码剖析,由于这份笔记的内容过多,小编没办法全部为大家展示出来,有不尽完美之处,还望大家多多海涵 第1篇:多线程基础 线程的优雅关闭 InterruptedException () 函数与interrupt ()函数 synchronized关键字 wait () 与notify () volatile关键字 JMM与happen-before 内存屏障 final关键字 综合应用:无锁编程 第2篇:Atomic类 AtomicInteger和AtomicLong AtomicBoolean和AtomicReference AtomicStampedReference和AtomicMarkableReference AtomicIntegerFieldUpdater. AtomicL ongFieldUpdater和AtomicReferenceFieldUpdater AtomicIntegerArray. AtomicLongArray和Atomic ReferenceArray Striped64与LongAdder 第3篇:Lock与Condition 互斥锁 读写锁 Condition StampedLock ![]() ![]() 第4篇:同步工具类 Semaphore CountDownLatch CyclicBarrier Exchanger Phaser ![]() ![]() ![]() 第5篇:并发容器 BlockingQueue BlockingDeque CopyOnWrite ConcurrentLinkedQueue/Deque ConcurrentHashMap ConcurrentSkipListMap/Set ![]() ![]() ![]() ![]() 第6篇:线程池与Future 线程池的实现原理 线程池的类继承体系 ThreadPoolExector Callable与Future ScheduledThreadPoolExecutor Executors工具类 ![]() ![]() ![]() 第7篇:ForkJoinPool ForkJoinPool用法 核心数据结构 工作窃取队列 ForkJoinPool状态控制 Worker线程的阻塞—唤醒机制 任务的提交过程分析 工作窃取算法:任务的执行过程分析 ForkJoinTask的fork/join ForkJoinPool的优雅关闭 ![]() ![]() ![]() ![]() 第8篇:CompletableFuture CompletableFuture用法 四种任务原型 CompletionStage接口 CompletableFuture内部原理 任务的网状执行:有向无环图 allOf内部的计算图分析 ![]() ![]() ![]() ![]() 总结 相信大家读完这份笔记后,你将对多线程的原理、各种并发的设计原理有一个全面而深刻的理解!整理不易,烦请多多转发。 |
|