深入理解Java高并发编程

深入理解Java高并发编程
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2021-11
版次: 1
ISBN: 9787302591344
定价: 148.00
装帧: 其他
开本: 其他
纸张: 胶版纸
页数: 636页
字数: 1,114.000千字
17人买过
  • 《深入理解Java高并发编程》致力于介绍Java高并发编程方面的知识。由于多线程处理涉及的知识内容十分丰富,因此介绍时必须从Java层面的讲解一直深入到底层的知识讲解。为了帮助读者轻松阅读本书并掌握其中知识,本书做了大量基础知识的铺垫。在第1篇基础知识储备中,主要介绍计算机原理、并发基础、常见语言的线程实现、Java并发入门、JUC之Java线程池、JUC之同步结构、Java NIO详解等内容。在第2篇深入Java并发原理中,详细介绍了JUC包中所有使用的原子类的原理与源码实现;非常关键且容易出错的volatile关键字的原理,从Java、JVM、C、汇编、CPU层面对其进行详细讲解;synchronized在JVM中获取锁和释放锁的流程;JUC包的核心结构——AQS的原理与源码实现,通过逐方法、逐行的解释,帮助读者彻底掌握AQS中提供的获取锁、释放锁、条件变量等操作的实现与原理。后,详细介绍了JVM中JNI的实现原理,将Java Thread对象中的所有方法在JVM层面的实现流程进行了详细描述,以帮助读者在使用这些方法时,知道底层发生了什么,以及发生异常时如何从容解决问题。 黄俊,专注于研究Java语言, Hotspot, Linux内核,C语言与汇编,架构设计,多线程并发处理,专注于研究高效学习方式。曾就职于美团、阿里,前新东方业务架构师。 第1篇 基础知识储备

    第1章 计算机原理 2

    1.1 汇编语言基础 2

    1.1.1 汇编语言与机器语言 2

    1.1.2 常见的寄存器 3

    1.1.3 常见操作语句 6

    1.1.4 内联汇编 6

    1.1.5 常见助记符 9

    1.2 C语言基础 12

    1.2.1 基本数据类型 12

    1.2.2 结构体原理 13

    1.2.3 指针原理 19

    1.2.4 指针与数组原理 21

    1.3 计算机组成原理基础 23

    1.3.1 intel的发展历史 23

    1.3.2 计算机程序的组成 29

    1.3.3 计算机的内存管理与内存地址原理 36

    1.3.4 计算机程序的执行原理 44

    1.4 OS概述 52

    1.4.1 OS的发展历程和分类 53

    1.4.2 常用的OS系统 56

    1.5 小结 57

    第2章 并发基础 58

    2.1 并发与并行原理 58

    2.1.1 并发 58

    2.1.2 并行 59

    2.1.3 并发与并行带来的问题 59

    2.2 传统OS并发控制原理 60

    2.2.1 P-V原语 60

    2.2.2 信号量 61

    2.2.3 互斥量 62

    2.2.4 自旋锁 62

    2.2.5 读写锁 63

    2.2.6 死锁 64

    2.3 CPU并发控制原理 66

    2.3.1 中断控制 66

    2.3.2 缓存一致性协议 67

    2.3.3 系统屏障 69

    2.3.4 总线/缓存锁 73

    2.4 Linux内核并发控制原理 73

    2.4.1 Linux内核信号量与P-V原语实现原理 74

    2.4.2 Linux内核互斥量实现原理 80

    2.4.3 Linux内核自旋锁实现原理 80

    2.4.4 Linux内核读写锁实现原理 84

    2.4.5 Linux内核中断控制与内核抢占原理 91

    2.4.6 Linux内核seq锁实现原理 98

    2.4.7 Linux内核rcu锁实现原理 100

    2.5 Glibc和Pthread库原理 105

    2.5.1 C标准、CRT与Glibc 105

    2.5.2 LinuxThread与POSIX、NGTP、NPTL 107

    2.5.3 NPTL常用函数与实现原理 108

    2.6 小结 131

    第3章 常见语言的线程实现 132

    3.1 汇编语言多线程实现 132

    3.2 C语言多线程实现 133

    3.3 Go语言多线程实现 134

    3.4 Python语言多线程实现 135

    3.5 Java语言多线程实现 135

    3.6 不同语言并发异同与知识推理 136

    3.7 小结 136

    第4章 Java并发入门 137

    4.1 Java Thread类核心原理与方法 137

    4.1.1 走进Thread 138

    4.1.2 run方法 139

    4.1.3 start方法 139

    4.1.4 stop方法 140

    4.1.5 destory方法 140

    4.1.6 interrupt方法 141

    4.1.7 sleep方法 142

    4.1.8 join方法 142

    4.1.9 Thread方法使用与线程状态转换 143

    4.2 Runnable与Callable的使用 144

    4.3 Future接口的使用 146

    4.4 Promise接口的使用 147

    4.5 volatile关键字的使用 147

    4.6 synchronized关键字的使用 148

    4.7 小结 149

    第5章 JUC之Java线程池 150

    5.1 Executor与ExecutorService详解 150

    5.1.1 Executor接口原理 150

    5.1.2 ExecutorService接口原理 151

    5.2 ThreadPoolExecutor详解 156

    5.2.1 ThreadPoolExecutor例子 156

    5.2.2 ThreadPoolExecutor核心数据结构 156

    5.2.3 execute方法的实现原理 159

    5.2.4 shutdown方法实现原理 164

    5.2.5 awaitTermination方法的实现原理 166

    5.2.6 shutdownNow方法的实现原理 167

    5.3 ScheduledThreadPoolExecutor详解 168

    5.3.1 ScheduledThreadPoolExecutor例子 169

    5.3.2 ScheduledExecutorService接口 170

    5.3.3 ScheduledThreadPoolExecutor核心变量 170

    5.3.4 scheduleAtFixedRate实现与原理 172

    5.3.5 ScheduledFutureTask实现与原理 176

    5.3.6 scheduleWithFixedDelay实现与原理 177

    5.3.7 shutdown实现与原理 178

    5.4 构建不同线程池 179

    5.4.1 FixedThreadPool 179

    5.4.2 SingleThreadExecutor 179

    5.4.3 CachedThreadPool 180

    5.4.4 SingleThreadScheduledExecutor 180

    5.4.5 ScheduledThreadPool 181

    5.5 ForkJoinPool详解 181

    5.5.1 ForkJoinPool核心数据结构与方法 181

    5.5.2 ForkJoinPool externalPush实现原理 185

    5.5.3 ForkJoinPool externalSubmit实现原理 185

    5.5.4 ForkJoinPool signalWork实现原理 187

    5.5.5 ForkJoinPool tryAddWorker实现原理 188

    5.5.6 ForkJoinPool createWorker实现原理 189

    5.5.7 ForkJoinPool registerWorker实现原理 189

    5.5.8 ForkJoinPool ForkJoinWorkerThread执行原理 190

    5.5.9 ForkJoinPool scan窃取算法原理 191

    5.5.10 ForkJoinPool runTask原理 194

    5.5.11 ForkJoinPool awaitWork原理 196

    5.5.12 ForkJoinPool切割子任务 197

    5.5.13 ForkJoinTask doExec原理 198

    5.5.14 ForkJoinTask fork原理 202

    5.5.15 ForkJoinTask join原理 202

    5.5.16 ForkJoinPool awaitJoin原理 204

    5.5.17 ForkJoinPool tryRemoveAndExec原理 205

    5.5.18 ForkJoinPool helpStealer原理 207

    5.5.19 ForkJoinPool tryCompensate原理 209

    5.5.20 ForkJoinPool shutdown原理 211

    5.5.21 ForkJoinPool awaitTermination原理 214

    5.5.22 ForkJoinPool总结 215

    5.5.23 RecursiveAction原理 216

    5.5.24 RecursiveTask原理 217

    5.5.25 CountedCompleter原理 218

    5.6 CompletableFuture详解 234

    5.6.1 CompletableFuture 概念与例子 234

    5.6.2 CompletableFuture CompletionStage接口 235

    5.6.3 CompletableFuture runAsync原理 237

    5.6.4 CompletableFuture postComplete原理 238

    5.6.5 CompletableFuture Completion原理 239

    5.6.6 CompletableFuture allOf原理 246

    5.7 小结 253

    第6章 JUC之同步结构 254

    6.1 同步结构基础实现原理 254

    6.1.1 Lock接口 254

    6.1.2 Condition接口 255

    6.1.3 LockSupport类 255

    6.1.4 AQS类 256

    6.1.5 队列核心接口 259

    6.2 ReentrantLock实现与原理 262

    6.3 ReentrantReadWriteLock实现与原理 264

    6.4 Semapher实现与原理 271

    6.5 FutureTask实现与原理 273

    6.6 ArrayBlockingQueue实现与原理 278

    6.7 LinkedBlockingQueue实现与原理 281

    6.8 LinkedBlockingDeque实现与原理 284

    6.9 LinkedTransferQueue实现与原理 288

    6.10 SynchronousQueue实现与原理 295

    6.11 PriorityBlockingQueue实现与原理 305

    6.12 ConcurrentLinkedQueue实现与原理 310

    6.13 ConcurrentLinkedDeque实现与原理 315

    6.14 ThreadLocalRandom实现与原理 326

    6.15 CopyOnWriteArrayList实现与原理 329

    6.16 CopyOnWriteArraySet实现与原理 331

    6.17 CountDownLatch实现与原理 333

    6.18 CyclicBarrier实现与原理 335

    6.19 ConcurrentHashMap实现与原理 338

    6.20 ConcurrentSkipListMap实现与原理 354

    6.21 ConcurrentSkipListSet实现与原理 363

    6.22 Exchanger实现与原理 364

    6.23 Phaser实现与原理 372

    6.24 小结 380

    第7章 Java NIO详解 382

    7.1 NIO三剑客之Buffer原理 382

    7.1.1 Buffer 383

    7.1.2 ByteBuffer 385

    7.1.3 HeapByteBuffer 394

    7.1.4 MappedByteBuffer 396

    7.1.5 DirectByteBuffer 398

    7.2 NIO三剑客之Channel原理 403

    7.2.1 Channel 403

    7.2.2 FileChannel 404

    7.2.3 SocketChannel 408

    7.2.4 ServerSocketChannel 412

    7.2.5 DatagramChannel 415

    7.3 NIO三剑客之Selector原理 420

    7.3.1 Selector 420

    7.3.2 SelectionKey 423

    7.4 小结 431

    第2篇 深入Java并发原理

    第8章 JVM synchronized与volatile原理详解 434

    8.1 JVM源码分析之Unsafe类 434

    8.1.1 compareAndSwap类方法实现原理 435

    8.1.2 getIntVolatile方法实现原理 435

    8.1.3 putIntVolatile方法实现原理 435

    8.1.4 putOrderedInt方法实现原理 436

    8.1.5 park方法实现原理 437

    8.1.6 loadFence方法实现原理 438

    8.1.7 storeFence方法实现原理 438

    8.1.8 fullFence方法 438

    8.2 JVM源码分析之原子类 439

    8.2.1 AtomicInteger实现与原理 439

    8.2.2 AtomicBoolean实现与原理 440

    8.2.3 AtomicIntegerArray实现与原理 441

    8.2.4 AtomicIntegerFieldUpdater实现与原理 443

    8.2.5 AtomicLong实现与原理 445

    8.2.6 AtomicLongArray实现与原理 446

    8.2.7 AtomicLongFieldUpdater实现与原理 447

    8.2.8 AtomicMarkableReference实现与原理 450

    8.2.9 AtomicStampedReference实现与原理 451

    8.2.10 AtomicReference实现与原理 454

    8.2.11 AtomicReferenceArray实现与原理 454

    8.2.12 AtomicReferenceFieldUpdater实现与原理 455

    8.2.13 DoubleAccumulator实现与原理 457

    8.2.14 DoubleAdder实现与原理 465

    8.2.15 LongAccumulator实现与原理 466

    8.2.16 LongAdder实现与原理 467

    8.3 volatile原理分析 469

    8.3.1 JVM内存模型 469

    8.3.2 Java中happens-before原则 469

    8.3.3 Java中Volatile语义 470

    8.3.4 Java中Volatile字节码原理 472

    8.3.5 JVM中putstatic和getstatic字节码原理 473

    8.3.6 C/C  中的volatile原理 475

    8.3.7 JVM中volatile对于禁止重排序的实现原理 477

    8.3.8 从Pthread线程库分析C的volatile语义 480

    8.3.9 JMM和CPU模型原理 484

    8.4 synchronized源码分析 488

    8.4.1 Java对象头原理 488

    8.4.2 _monitorenter 获取锁过程原理 490

    8.4.3 _monitorexit 释放锁过程原理 513

    8.4.4 Object.wait 等待过程原理 518

    8.4.5 Object.notify 唤醒过程原理 522

    8.4.6 Object.notifyAll 唤醒全部过程原理 524

    8.4.7 Object.hashcode 获取哈希码过程原理 526

    8.5 小结 530

    第9章 AQS源码详解 531

    9.1 compare and swap原理详解 531

    9.1.1 compare and swap概念 531

    9.1.2 Java层面compare and swap实现原理 531

    9.1.3 Hotspot虚拟机层面compare and swap实现原理 532

    9.1.4 汇编层面compare and swap实现原理 533

    9.2 AQS核心之Node类 533

    9.3 AQS核心之head和tail变量 534

    9.4 AQS核心之state变量 535

    9.5 AQS核心之acquire过程原理 536

    9.6 AQS核心之acquireInterruptibly过程原理 540

    9.7 AQS核心之acquireShared过程原理 541

    9.8 AQS核心之acquireSharedInterruptibly过程原理 544

    9.9 AQS核心之release过程原理 544

    9.10 AQS核心之releaseShared过程原理 545

    9.11 AQS核心之条件变量原理 545

    9.11.1 ConditionObject类 545

    9.11.2 await Node等待操作原理 546

    9.11.3 signal Node唤醒操作原理 550

    9.11.4 相关工具方法详述 552

    9.12 小结 553

    第10章 JVM线程原理详解 554

    10.1 JNI详述 554

    10.1.1 JNI概念 554

    10.1.2 JVM执行外部动态链接库原理 556

    10.1.3 JVM执行内部动态链接库原理 578

    10.1.4 JNIEnv结构体原理 583

    10.2 Java Thread类源码解析 584

    10.3 Java Thread Start原理解析 585

    10.4 Java Thread Stop原理解析 592

    10.5 Java Thread Interrupt原理解析 594

    10.6 Java Thread isInterrupted原理解析 595

    10.7 Java Thread Sleep原理解析 596

    10.8 Java Thread Yield原理解析 598

    10.9 Java Thread Suspend原理解析 599

    10.10 Java Thread Resume原理解析 601

    10.11 JVM Thread层级结构 601

    10.12 JVM互斥体原理 605

    10.12.1 ParkEvent与Parker原理 606

    10.12.2 MutexLocker原理 614

    10.12.3 MutexLockerEx原理 615

    10.12.4 Mutex和Monitor原理 616

    10.13 小结 623
  • 内容简介:
    《深入理解Java高并发编程》致力于介绍Java高并发编程方面的知识。由于多线程处理涉及的知识内容十分丰富,因此介绍时必须从Java层面的讲解一直深入到底层的知识讲解。为了帮助读者轻松阅读本书并掌握其中知识,本书做了大量基础知识的铺垫。在第1篇基础知识储备中,主要介绍计算机原理、并发基础、常见语言的线程实现、Java并发入门、JUC之Java线程池、JUC之同步结构、Java NIO详解等内容。在第2篇深入Java并发原理中,详细介绍了JUC包中所有使用的原子类的原理与源码实现;非常关键且容易出错的volatile关键字的原理,从Java、JVM、C、汇编、CPU层面对其进行详细讲解;synchronized在JVM中获取锁和释放锁的流程;JUC包的核心结构——AQS的原理与源码实现,通过逐方法、逐行的解释,帮助读者彻底掌握AQS中提供的获取锁、释放锁、条件变量等操作的实现与原理。后,详细介绍了JVM中JNI的实现原理,将Java Thread对象中的所有方法在JVM层面的实现流程进行了详细描述,以帮助读者在使用这些方法时,知道底层发生了什么,以及发生异常时如何从容解决问题。
  • 作者简介:
    黄俊,专注于研究Java语言, Hotspot, Linux内核,C语言与汇编,架构设计,多线程并发处理,专注于研究高效学习方式。曾就职于美团、阿里,前新东方业务架构师。
  • 目录:
    第1篇 基础知识储备

    第1章 计算机原理 2

    1.1 汇编语言基础 2

    1.1.1 汇编语言与机器语言 2

    1.1.2 常见的寄存器 3

    1.1.3 常见操作语句 6

    1.1.4 内联汇编 6

    1.1.5 常见助记符 9

    1.2 C语言基础 12

    1.2.1 基本数据类型 12

    1.2.2 结构体原理 13

    1.2.3 指针原理 19

    1.2.4 指针与数组原理 21

    1.3 计算机组成原理基础 23

    1.3.1 intel的发展历史 23

    1.3.2 计算机程序的组成 29

    1.3.3 计算机的内存管理与内存地址原理 36

    1.3.4 计算机程序的执行原理 44

    1.4 OS概述 52

    1.4.1 OS的发展历程和分类 53

    1.4.2 常用的OS系统 56

    1.5 小结 57

    第2章 并发基础 58

    2.1 并发与并行原理 58

    2.1.1 并发 58

    2.1.2 并行 59

    2.1.3 并发与并行带来的问题 59

    2.2 传统OS并发控制原理 60

    2.2.1 P-V原语 60

    2.2.2 信号量 61

    2.2.3 互斥量 62

    2.2.4 自旋锁 62

    2.2.5 读写锁 63

    2.2.6 死锁 64

    2.3 CPU并发控制原理 66

    2.3.1 中断控制 66

    2.3.2 缓存一致性协议 67

    2.3.3 系统屏障 69

    2.3.4 总线/缓存锁 73

    2.4 Linux内核并发控制原理 73

    2.4.1 Linux内核信号量与P-V原语实现原理 74

    2.4.2 Linux内核互斥量实现原理 80

    2.4.3 Linux内核自旋锁实现原理 80

    2.4.4 Linux内核读写锁实现原理 84

    2.4.5 Linux内核中断控制与内核抢占原理 91

    2.4.6 Linux内核seq锁实现原理 98

    2.4.7 Linux内核rcu锁实现原理 100

    2.5 Glibc和Pthread库原理 105

    2.5.1 C标准、CRT与Glibc 105

    2.5.2 LinuxThread与POSIX、NGTP、NPTL 107

    2.5.3 NPTL常用函数与实现原理 108

    2.6 小结 131

    第3章 常见语言的线程实现 132

    3.1 汇编语言多线程实现 132

    3.2 C语言多线程实现 133

    3.3 Go语言多线程实现 134

    3.4 Python语言多线程实现 135

    3.5 Java语言多线程实现 135

    3.6 不同语言并发异同与知识推理 136

    3.7 小结 136

    第4章 Java并发入门 137

    4.1 Java Thread类核心原理与方法 137

    4.1.1 走进Thread 138

    4.1.2 run方法 139

    4.1.3 start方法 139

    4.1.4 stop方法 140

    4.1.5 destory方法 140

    4.1.6 interrupt方法 141

    4.1.7 sleep方法 142

    4.1.8 join方法 142

    4.1.9 Thread方法使用与线程状态转换 143

    4.2 Runnable与Callable的使用 144

    4.3 Future接口的使用 146

    4.4 Promise接口的使用 147

    4.5 volatile关键字的使用 147

    4.6 synchronized关键字的使用 148

    4.7 小结 149

    第5章 JUC之Java线程池 150

    5.1 Executor与ExecutorService详解 150

    5.1.1 Executor接口原理 150

    5.1.2 ExecutorService接口原理 151

    5.2 ThreadPoolExecutor详解 156

    5.2.1 ThreadPoolExecutor例子 156

    5.2.2 ThreadPoolExecutor核心数据结构 156

    5.2.3 execute方法的实现原理 159

    5.2.4 shutdown方法实现原理 164

    5.2.5 awaitTermination方法的实现原理 166

    5.2.6 shutdownNow方法的实现原理 167

    5.3 ScheduledThreadPoolExecutor详解 168

    5.3.1 ScheduledThreadPoolExecutor例子 169

    5.3.2 ScheduledExecutorService接口 170

    5.3.3 ScheduledThreadPoolExecutor核心变量 170

    5.3.4 scheduleAtFixedRate实现与原理 172

    5.3.5 ScheduledFutureTask实现与原理 176

    5.3.6 scheduleWithFixedDelay实现与原理 177

    5.3.7 shutdown实现与原理 178

    5.4 构建不同线程池 179

    5.4.1 FixedThreadPool 179

    5.4.2 SingleThreadExecutor 179

    5.4.3 CachedThreadPool 180

    5.4.4 SingleThreadScheduledExecutor 180

    5.4.5 ScheduledThreadPool 181

    5.5 ForkJoinPool详解 181

    5.5.1 ForkJoinPool核心数据结构与方法 181

    5.5.2 ForkJoinPool externalPush实现原理 185

    5.5.3 ForkJoinPool externalSubmit实现原理 185

    5.5.4 ForkJoinPool signalWork实现原理 187

    5.5.5 ForkJoinPool tryAddWorker实现原理 188

    5.5.6 ForkJoinPool createWorker实现原理 189

    5.5.7 ForkJoinPool registerWorker实现原理 189

    5.5.8 ForkJoinPool ForkJoinWorkerThread执行原理 190

    5.5.9 ForkJoinPool scan窃取算法原理 191

    5.5.10 ForkJoinPool runTask原理 194

    5.5.11 ForkJoinPool awaitWork原理 196

    5.5.12 ForkJoinPool切割子任务 197

    5.5.13 ForkJoinTask doExec原理 198

    5.5.14 ForkJoinTask fork原理 202

    5.5.15 ForkJoinTask join原理 202

    5.5.16 ForkJoinPool awaitJoin原理 204

    5.5.17 ForkJoinPool tryRemoveAndExec原理 205

    5.5.18 ForkJoinPool helpStealer原理 207

    5.5.19 ForkJoinPool tryCompensate原理 209

    5.5.20 ForkJoinPool shutdown原理 211

    5.5.21 ForkJoinPool awaitTermination原理 214

    5.5.22 ForkJoinPool总结 215

    5.5.23 RecursiveAction原理 216

    5.5.24 RecursiveTask原理 217

    5.5.25 CountedCompleter原理 218

    5.6 CompletableFuture详解 234

    5.6.1 CompletableFuture 概念与例子 234

    5.6.2 CompletableFuture CompletionStage接口 235

    5.6.3 CompletableFuture runAsync原理 237

    5.6.4 CompletableFuture postComplete原理 238

    5.6.5 CompletableFuture Completion原理 239

    5.6.6 CompletableFuture allOf原理 246

    5.7 小结 253

    第6章 JUC之同步结构 254

    6.1 同步结构基础实现原理 254

    6.1.1 Lock接口 254

    6.1.2 Condition接口 255

    6.1.3 LockSupport类 255

    6.1.4 AQS类 256

    6.1.5 队列核心接口 259

    6.2 ReentrantLock实现与原理 262

    6.3 ReentrantReadWriteLock实现与原理 264

    6.4 Semapher实现与原理 271

    6.5 FutureTask实现与原理 273

    6.6 ArrayBlockingQueue实现与原理 278

    6.7 LinkedBlockingQueue实现与原理 281

    6.8 LinkedBlockingDeque实现与原理 284

    6.9 LinkedTransferQueue实现与原理 288

    6.10 SynchronousQueue实现与原理 295

    6.11 PriorityBlockingQueue实现与原理 305

    6.12 ConcurrentLinkedQueue实现与原理 310

    6.13 ConcurrentLinkedDeque实现与原理 315

    6.14 ThreadLocalRandom实现与原理 326

    6.15 CopyOnWriteArrayList实现与原理 329

    6.16 CopyOnWriteArraySet实现与原理 331

    6.17 CountDownLatch实现与原理 333

    6.18 CyclicBarrier实现与原理 335

    6.19 ConcurrentHashMap实现与原理 338

    6.20 ConcurrentSkipListMap实现与原理 354

    6.21 ConcurrentSkipListSet实现与原理 363

    6.22 Exchanger实现与原理 364

    6.23 Phaser实现与原理 372

    6.24 小结 380

    第7章 Java NIO详解 382

    7.1 NIO三剑客之Buffer原理 382

    7.1.1 Buffer 383

    7.1.2 ByteBuffer 385

    7.1.3 HeapByteBuffer 394

    7.1.4 MappedByteBuffer 396

    7.1.5 DirectByteBuffer 398

    7.2 NIO三剑客之Channel原理 403

    7.2.1 Channel 403

    7.2.2 FileChannel 404

    7.2.3 SocketChannel 408

    7.2.4 ServerSocketChannel 412

    7.2.5 DatagramChannel 415

    7.3 NIO三剑客之Selector原理 420

    7.3.1 Selector 420

    7.3.2 SelectionKey 423

    7.4 小结 431

    第2篇 深入Java并发原理

    第8章 JVM synchronized与volatile原理详解 434

    8.1 JVM源码分析之Unsafe类 434

    8.1.1 compareAndSwap类方法实现原理 435

    8.1.2 getIntVolatile方法实现原理 435

    8.1.3 putIntVolatile方法实现原理 435

    8.1.4 putOrderedInt方法实现原理 436

    8.1.5 park方法实现原理 437

    8.1.6 loadFence方法实现原理 438

    8.1.7 storeFence方法实现原理 438

    8.1.8 fullFence方法 438

    8.2 JVM源码分析之原子类 439

    8.2.1 AtomicInteger实现与原理 439

    8.2.2 AtomicBoolean实现与原理 440

    8.2.3 AtomicIntegerArray实现与原理 441

    8.2.4 AtomicIntegerFieldUpdater实现与原理 443

    8.2.5 AtomicLong实现与原理 445

    8.2.6 AtomicLongArray实现与原理 446

    8.2.7 AtomicLongFieldUpdater实现与原理 447

    8.2.8 AtomicMarkableReference实现与原理 450

    8.2.9 AtomicStampedReference实现与原理 451

    8.2.10 AtomicReference实现与原理 454

    8.2.11 AtomicReferenceArray实现与原理 454

    8.2.12 AtomicReferenceFieldUpdater实现与原理 455

    8.2.13 DoubleAccumulator实现与原理 457

    8.2.14 DoubleAdder实现与原理 465

    8.2.15 LongAccumulator实现与原理 466

    8.2.16 LongAdder实现与原理 467

    8.3 volatile原理分析 469

    8.3.1 JVM内存模型 469

    8.3.2 Java中happens-before原则 469

    8.3.3 Java中Volatile语义 470

    8.3.4 Java中Volatile字节码原理 472

    8.3.5 JVM中putstatic和getstatic字节码原理 473

    8.3.6 C/C  中的volatile原理 475

    8.3.7 JVM中volatile对于禁止重排序的实现原理 477

    8.3.8 从Pthread线程库分析C的volatile语义 480

    8.3.9 JMM和CPU模型原理 484

    8.4 synchronized源码分析 488

    8.4.1 Java对象头原理 488

    8.4.2 _monitorenter 获取锁过程原理 490

    8.4.3 _monitorexit 释放锁过程原理 513

    8.4.4 Object.wait 等待过程原理 518

    8.4.5 Object.notify 唤醒过程原理 522

    8.4.6 Object.notifyAll 唤醒全部过程原理 524

    8.4.7 Object.hashcode 获取哈希码过程原理 526

    8.5 小结 530

    第9章 AQS源码详解 531

    9.1 compare and swap原理详解 531

    9.1.1 compare and swap概念 531

    9.1.2 Java层面compare and swap实现原理 531

    9.1.3 Hotspot虚拟机层面compare and swap实现原理 532

    9.1.4 汇编层面compare and swap实现原理 533

    9.2 AQS核心之Node类 533

    9.3 AQS核心之head和tail变量 534

    9.4 AQS核心之state变量 535

    9.5 AQS核心之acquire过程原理 536

    9.6 AQS核心之acquireInterruptibly过程原理 540

    9.7 AQS核心之acquireShared过程原理 541

    9.8 AQS核心之acquireSharedInterruptibly过程原理 544

    9.9 AQS核心之release过程原理 544

    9.10 AQS核心之releaseShared过程原理 545

    9.11 AQS核心之条件变量原理 545

    9.11.1 ConditionObject类 545

    9.11.2 await Node等待操作原理 546

    9.11.3 signal Node唤醒操作原理 550

    9.11.4 相关工具方法详述 552

    9.12 小结 553

    第10章 JVM线程原理详解 554

    10.1 JNI详述 554

    10.1.1 JNI概念 554

    10.1.2 JVM执行外部动态链接库原理 556

    10.1.3 JVM执行内部动态链接库原理 578

    10.1.4 JNIEnv结构体原理 583

    10.2 Java Thread类源码解析 584

    10.3 Java Thread Start原理解析 585

    10.4 Java Thread Stop原理解析 592

    10.5 Java Thread Interrupt原理解析 594

    10.6 Java Thread isInterrupted原理解析 595

    10.7 Java Thread Sleep原理解析 596

    10.8 Java Thread Yield原理解析 598

    10.9 Java Thread Suspend原理解析 599

    10.10 Java Thread Resume原理解析 601

    10.11 JVM Thread层级结构 601

    10.12 JVM互斥体原理 605

    10.12.1 ParkEvent与Parker原理 606

    10.12.2 MutexLocker原理 614

    10.12.3 MutexLockerEx原理 615

    10.12.4 Mutex和Monitor原理 616

    10.13 小结 623
查看详情
相关图书 / 更多
深入理解Java高并发编程
深入理解移动互联网
吴功宜 吴英 编著
深入理解Java高并发编程
深入实施“四个育人”,彰显本科人才培养特色——云南大学本科教育改革与创新优秀论文集
主编唐旭光
深入理解Java高并发编程
深入浅出C语言程序设计(第3版·微课版)
李俊·c;强振平;荣剑;张晴晖;赵毅力;钟丽辉
深入理解Java高并发编程
深入浅出C#(视频教学版)
赵云
深入理解Java高并发编程
深入实践Kotlin元编程
霍丙乾 著
深入理解Java高并发编程
深入北方的小路(布克奖震撼杰作。人生在世,行走于地狱屋顶,凝望花朵。余华力荐“了不起的小说”!)
[澳]理查德·弗兰纳根 著;新经典 出品
深入理解Java高并发编程
深入学习习近平关于科技创新的重要论述
科学技术部编写组 著
深入理解Java高并发编程
深入浅出IoT:完整项目通关实战
[英]吉姆·贝内特(Jim Bennett) 著;柴火创客空间 译;[美]珍·福克斯(Jen Fox);[美]珍·卢珀(Jen Looper)
深入理解Java高并发编程
深入浅出SSD:固态存储核心技术、原理与实战 第2版
SSDFans 胡波 石亮 岑彪
深入理解Java高并发编程
深入地心 少儿科普 新华正版
英国尤斯伯恩出版公司
深入理解Java高并发编程
深入理解FFmpeg
刘歧 赵军 杜金房 赵文杰 宋韶颍
深入理解Java高并发编程
深入人心:数字产品设计的底层逻辑
林婕
您可能感兴趣 / 更多
深入理解Java高并发编程
隧道装配式绿色建造技术
黄俊
深入理解Java高并发编程
南通传:江海门户
黄俊生
深入理解Java高并发编程
绿色隧道建造技术
黄俊;张忠宇;赵光;李志远
深入理解Java高并发编程
农业植物病理学(第三版)
黄俊斌;侯明生
深入理解Java高并发编程
技术与认同:新生代农民工手机媒介使用与社会认同研究
黄俊华 著
深入理解Java高并发编程
植物纤维模塑发展报告:2020-2022
黄俊彦
深入理解Java高并发编程
Netty源码全解与架构思维
黄俊
深入理解Java高并发编程
实验病原生物学 (第2版)
黄俊;马长玲
深入理解Java高并发编程
水下隧道结构健康监测技术与应用
黄俊;沈阳;张忠宇;张巍;邵理阳
深入理解Java高并发编程
“樊迟学稼”诠释史
黄俊棚
深入理解Java高并发编程
Tomcat源码全解与架构思维
黄俊
深入理解Java高并发编程
《HuangFuRen高中物理黄夫人讲义(一轮复习讲义)》
黄俊琨 编著