Java 并发编程之美 作者: 翟陆续 / 薛宾田

介绍的很详细,实例也很给力,讲的很明白

部分 Java 并发编程基础篇 章 并发编程线程基础 / 21.1 什么是线程 / 21.2 线程创建与运行 / 31.3 线程通知与等待 / 61.4 等待线程执行终止的join 方法 / 161.5 让线程睡眠的sleep 方法 / 191.6 让出CPU 执行权的yield 方法 / 241.8 理解线程上下文切换 / 301.9 线程死锁 / 301.9.1 什么是线程死锁 / 301.9.2 如何避免线程死锁 / 331.10 守护线程与用户线程 / 351.11 ThreadLocal / 391.11.1 ThreadLocal 使用示例 / 401.11.2 ThreadLocal 的实现原理 / 42 1.11.3 ThreadLocal 不支持继承性 / 451.11.4 InheritableThreadLocal 类 / 46第2 章 并发编程的其他基础知识 / 502.1 什么是多线程并发编程 / 502.2 为什么要进行多线程并发编程 / 512.3 Java 中的线程安全问题 / 512.4 Java 享变量的内存可见性问题 / 522.5 Java 中的synchronized 关键字 / 542.5.1 synchronized 关键字介绍 / 542.5.2 synchronized 的内存语义 / 552.6 Java 中的volatile 关键字 / 552.7 Java 中的原子性操作 / 572.8 Java 中的CAS 操作 / 592.9 Unsafe 类 / 592.9.1 Unsafe 类中的重要方法 / 592.9.2 如何使用Unsafe 类 / 612.10 Java 指令重排序 / 652.11 伪共享 / 672.11.1 什么是伪共享 / 672.11.2 为何会出现伪共享 / 682.11.3 如何避免伪共享 / 702.11.4 小结 / 722.12 锁的概述 / 722.12.1 乐观锁与悲观锁 / 722.12.2 公平锁与非公平锁 / 752.12.3 独占锁与共享锁 / 752.12.4 什么是可重入锁 / 762.12.5 自旋锁 / 772.13 总结 / 77第二部分 Java 并发编程不错篇第3 章 Java 并发包中ThreadLocalRandom 类原理剖析 / 803.1 Random 类及其局限性 / 803.2 ThreadLocalRandom / 823.3 源码分析 / 843.4 总结 / 87第4 章 Java 并发包中原子操作类原理剖析4.1 原子变量操作类 / 884.2 JDK 8 新增的原子操作类LongAdder / 934.2.1 LongAdder 简单介绍 / 934.2.2 LongAdder 代码分析 / 954.2.3 小结 / 1014.3 LongAccumulator 类原理探究 / 1024.4 总结 / 104第5 章 Java 并发包中并发List 源码剖析 / 1055.1 介绍 / 1055.2 主要方法源码解析 / 1065.2.1 初始化 / 1065.2.2 添加元素 / 1065.2.3 获取指定位置元素 / 1085.2.4 修改指定元素 / 1095.2.5 删除元素 / 1105.2.6 弱一致性的迭代器 / 1115.3 总结 / 114第6 章 Java 并发包中锁原理剖析 / 1156.1 LockSupport 工具类 / 1156.2 抽象同步队列AQS 概述 / 1226.2.1 AQS――锁的底层支持 / 1226.2.2 AQS――条件变量的支持 / 1286.2.3 基于AQS 实现自定义同步器 / 1316.3 独占锁ReentrantLock 的原理 / 1366.3.1 类图结构 / 1366.3.2 获取锁 / 1376.3.3 释放锁 / 1426.3.4 案例介绍 / 1436.3.5 小结 / 1456.4 读写锁ReentrantReadWriteLock 的原理 / 1456.4.1 类图结构 / 1456.4.2 写锁的获取与释放 / 1476.4.3 读锁的获取与释放 / 1516.4.5 小结 / 1586.5 JDK 8 中新增的StampedLock 锁探究 / 1586.5.1 概述 / 1586.5.2 案例介绍 / 1606.5.3 小结 / 164第7 章 Java 并发包中并发队列原理剖析 / 1657.1 ConcurrentLinkedQueue 原理探究 / 1657.1.1 类图结构 / 1657.1.2 ConcurrentLinkedQueue 原理介绍 / 1667.1.3 小结 / 1817.2 LinkedBlockingQueue 原理探究 / 1827.2.1 类图结构 / 1827.2.2 LinkedBlockingQueue 原理介绍 / 1857.2.3 小结 / 1947.3 ArrayBlockingQueue 原理探究 / 1957.3.1 类图结构 / 1957.3.2 ArrayBlockingQueue 原理介绍 / 1977.3.3 小结 / 2027.4 PriorityBlockingQueue 原理探究 / 2037.4.1 介绍 / 2037.4.2 PriorityBlockingQueue 类图结构 / 2037.4.3 原理介绍 / 2057.4.4 案例介绍 / 2147.4.5 小结 / 2167.5 DelayQueue 原理探究 / 2177.5.1 DelayQueue 类图结构 / 2177.5.2 主要函数原理讲解 / 2197.5.3 案例介绍 / 2227.5.4 小结 / 224第8 章 Java 并发包中线程池ThreadPoolExecutor 原理探究 / 2258.1 介绍 / 2258.2 类图介绍 / 2258.3 源码分析 / 2308.3.1 public void execute(Runnable command) / 2308.3.2 工作线程Worker 的执行 / 2358.3.3 shutdown 操作 / 2388.3.4 shutdownNow 操作 / 2408.3.5 awaitTermination 操作 / 2418.4 总结 / 242第9 章 Java 并发包中ScheduledThreadPoolExecutor 原理探究 / 2439.1 介绍 / 2439.2 类图介绍 / 2439.3 原理剖析 / 2459.3.1 schedule(Runnable command, long delay,TimeUnit unit) 方法 / .2469.3.2 scheduleWithFixedDelay(Runnable command,long initialDelay, long delay,TimeUnit unit) 方法 / 2529.3.3 scheduleAtFixedRate(Runnable command,long initialDelay,long period,TimeUnit unit) 方法 / 2549.4 总结 / 2550 章 Java 并发包中线程同步器原理剖析 / 25610.1 CountDownLatch 原理剖析 / 25610.1.1 案例介绍 / 25610.1.2实现原理探究/25910.1.3小结/26310.2回环屏障CyclicBarrier原理探究/26410.2.1案例介绍/26410.2.2实现原理探究/26810.2.3小结/27211.1ArrayBlockingQueue的使用/28411.1.1异步日志打印模型概述/28411.1.2异步日志与具体实现/28511.1.3小结/29311.2Tomcat的NioEndPoint中ConcurrentLinkedQueue的使用/29311.2.1生产者――Acceptor线程/29411.2.2消费者――Poller线程/29811.2.3小结/30011.3并发组件ConcurrentHashMap使用注意事项/30011.4SimpleDateFormat是线程不安全的/30411.4.1问题复现/30411.4.2问题分析/30511.4.3小结/30911.5使用Timer时需要注意的事情/30911.5.1问题的产生/30911.5.2Timer实现原理分析/31011.5.3小结/31311.6对需要复用但是会被下游修改的参数要进行深复制/31411.6.1问题的产生/31411.6.2问题分析/31611.6.3小结/31811.7创建线程和线程池时要指定与业务相关的名称/31911.7.1创建线程需要有线程名/31911.7.2创建线程池时也需要指定线程池的名称/32111.7.3小结/32511.8使用线程池的情况下当程序结束时记得调用shutdown关闭线程池/32511.8.1问题复现/32511.8.2问题分析/32711.8.3小结/32911.9线程池使用FutureTask时需要注意的事情/32911.9.1问题复现/32911.9.2问题分析/33211.9.3小结33511.10使用ThreadLocal不当可能会导致内存泄漏/33611.10.1为何会出现内存泄漏/33611.10.2在线程池中使用ThreadLocal导致的内存泄漏/33911.10.3在Tomcat的Servlet中使用ThreadLocal导致内存泄漏/34111.10.4小结/34411.11总结/344

内容虚线
内容简介

并发编程相比 Java 中其他知识点的学习门槛较高,从而导致很多人望而却步。但无论是职场面试,还是高并发/ 高流量系统的实现,却都离不开并发编程,于是能够真正掌握并发编程的人成为了市场迫切需求的人才。本书通过图文结合、通俗易懂的讲解方式帮助大家完成多线程并发编程从入门到实践的飞跃!全书分为三部分,靠前部分为Java 并发编程基础篇,主要讲解Java 并发编程的基础知识、线程有关的知识和并发编程中的其他相关概念,这些知识在不错篇都会有所使用,掌握了本篇的内容,就为学习不错篇奠定了基础;第二部分为Java 并发编程不错篇,讲解了Java 并发包中核心组件的实现原理,让读者知其然,也知其所以然,熟练掌握本篇内容,对我们在日常开发高并发、高流量的系统时会大有裨益;第三部分为Java 并发编程实践篇,主要讲解并发组件的使用方法,以及在使用过程中容易遇到的问题和解决方法。

你可能感兴趣的:(计算机)