×
超值优惠券
¥50
100可用 有效期2天

全场图书通用(淘书团除外)

关闭
暂无评论
图文详情
  • ISBN:9787111698586
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:16开
  • 页数:572
  • 出版时间:2021-12-01
  • 条形码:9787111698586 ; 978-7-111-69858-6

本书特色

适读人群 :本书主要适合于以下读者:1.所有使用Java进行编程的开发人员2.服务器和分布式系统开发人员3.分布式系统架构师1. 畅销书作者撰写,全新升级,新增适用微服务与分布式开发的并发工具与Java线程池 2. 全面剖析多线程编程的核心库、方法、原理,案例式教学,透彻了解高并发本质与应对方法 3. 突破多线程技术,面试、工作得心应手 4. 全新升级章节 第8章,解析并发集合框架,善加利用必能提升开发者的开发效率;第9章,详解线程池的使用,让线程管理更规范、高效。 5. 重大更新章节第1章,丰富了JDK中Thread类的API;第2章,强化了多线程理论基石“栅栏”的解释与代码实现;第3章,增加了volatile关键字的多种使用技巧,以及基于并发包的线程间通信的深入解读;第5章,以更简洁的代码优化了定时器案例;第7章,深度讲解了Java线程状态切换。

内容简介

现代软件规模大、实时性要求高,所以掌握提升处理和响应速度的多线程技术势在必行。本书涵盖多线程编程的核心库、方法、原理,透彻讲解了高并发的本质与应对方法,帮助读者解决高并发环境下的业务瓶颈。 ●本书具体内容如下:第1章讲解Java多线程的基础知识,包括Thread类的核心API的使用。第2章讲解在多线程中通过synchronized关键字对并发访问进行控制的方法,为读者学习同步知识打好坚实的基础。第3章介绍线程间通信,以在多线程中进行数据传递。第4章介绍并发访问时的同步处理实现,包括读写锁(Lock对象)等相关技术点。第5章剖析定时器Timer类的内部原理。定时器在Android开发中会有深入应用,是很重要的技术点。第6章介绍单例模式下多线程的全面解决方案。第7章对前面遗漏的知识点进行补充,使多线程的知识体系更加完整,尽量做到不出现技术空白点。第8章介绍并发集合框架,可以大大提升开发多线程应用程序的效率。第9章介绍线程池的使用,让线程管理更规范、高效。这也是Java程序员面试必问的技术点。

目录

前 言 第1章 Java多线程技能 1 1.1 进程和线程的定义及多线程的优点 1 1.2 使用多线程 5 1.2.1 继承Thread类 6 1.2.2 使用常见的3个命令分析线程的信息 8 1.2.3 线程随机性的展现 10 1.2.4 执行start()的顺序不代表执行run()的顺序 12 1.2.5 实现Runnable接口 14 1.2.6 使用Runnable接口实现多线程的优点 15 1.2.7 public Thread(Runnable target)中的target参数 16 1.2.8 实例变量共享导致的“非线程安全”问题与相应的解决方案 18 1.2.9 Servlet技术也会引起“非线程安全”问题 22 1.2.10 留意i--与System.out.println()出现的“非线程安全”问题 25 1.2.11 方法run()被JVM所调用 27 1.3 方法currentThread() 27 1.4 方法isAlive() 30 1.5 方法sleep(long millis) 33 1.6 方法sleep(long millis, int nanos) 34 1.7 方法StackTraceElement[] getStack-Trace() 35 1.8 方法static void dumpStack() 36 1.9 方法Map getAllStackTraces() 37 1.10 方法getId() 39 1.11 停止线程 40 1.11.1 停止不了的线程 41 1.11.2 判断线程是不是停止状态 42 1.11.3 清除中断状态的使用场景 44 1.11.4 能停止的线程—异常法 48 1.11.5 在sleep状态下停止 51 1.11.6 使用stop()暴力停止线程 53 1.11.7 方法stop()与java.lang.Thread-Death异常 55 1.11.8 使用stop()释放锁导致数据结果不一致 57 1.11.9 使用return;语句停止线程的缺点及相应的解决方案 59 1.12 暂停线程 61 1.12.1 方法suspend()与resume()的使用 62 1.12.2 方法suspend()与resume()的缺点—独占 63 1.12.3 方法suspend()与resume()的缺点—数据不完整 66 1.12.4 使用LockSupport类实现线程暂停与恢复 67 1.13 方法yield() 69 1.14 线程的优先级 70 1.14.1 线程优先级的继承特性 71 1.14.2 线程优先级的规律性 72 1.14.3 线程优先级的随机性 75 1.14.4 看谁跑得快 76 1.15 守护线程 78 1.16 并发与并行 79 1.17 同步与异步 80 1.18 多核CPU不一定比单核CPU运行快 81 1.19 本章小结 82 第2章 对象及变量的并发访问 83 2.1 synchronized同步方法 83 2.1.1 方法内的变量是线程安全的 83 2.1.2 实例变量“非线程安全”问题及解决方案 85 2.1.3 同步synchronized在字节码指令中的原理 88 2.1.4 多个对象多个锁 90 2.1.5 synchronized方法将对象作为锁 92 2.1.6 脏读与解决 97 2.1.7 synchronized锁重入 99 2.1.8 继承环境下的锁重入 100 2.1.9 出现异常,锁自动释放 102 2.1.10 非同步方法?:不使用synchronized重写方法 104 2.2 synchronized同步语句块 106 2.2.1 synchronized方法的弊端 106 2.2.2 synchronized同步代码块的使用 109 2.2.3 用同步代码块解决同步方法的弊端 111 2.2.4 一半异步,一半同步 112 2.2.5 synchronized代码块间的同步性 114 2.2.6 方法println()也是同步的 116 2.2.7 验证synchronized(this)同步代码块是锁定当前对象的 117 2.2.8 将任意对象作为锁 119 2.2.9 多个锁就是异步执行 121 2.2.10 验证方法被调用是随机的 124 2.2.11 不同步导致的逻辑错误与解决方案 125 2.2.12 细化验证3个结论 129 2.2.13 类对象的单例性 134 2.2.14 静态同步?:synchronized方法与synchronized(class)代码块 135 2.2.15 同步synchronized方法可以对类的所有对象实例起作用 139 2.2.16 同步synchronized(class)代码块可以对类的所有对象实例起作用 141 2.2.17 String常量池特性与同步问题 143 2.2.18 synchronized方法无限等待问题与解决方案 146 2.2.19 多线程的死锁 148 2.2.20 内置类与静态内置类 150 2.2.21 内置类与同步?:实验1 153 2.2.22 内置类与同步?:实验2 155 2.2.23 锁对象改变导致异步执行 156 2.2.24 锁对象不改变依然是同步执行 159 2.2.25 同步写法案例比较 161 2.2.26 方法holdsLock(Object obj)的使用 161 2.2.27 临界区 162 2.3 volatile关键字 162 2.3.1 可见性的测试 163 2.3.2 原子性与非原子性的测试 171 2.3.3 禁止代码重排序的测试 179 2.4 本章小结 190 第3章 线程间通信 191 3.1 wait/ notify机制 191 3.1.1 不使用wait/notify机制进行通信的缺点 191 3.1.2 什么是wait/notify机制 194 3.1.3 wait/notify机制的原理 194 3.1.4 方法wait()的基本用法 195 3.1.5 使用代码完整实现wait /notify机制 196 3.1.6 使用wait/notify机制实现线程
展开全部

作者简介

高洪岩某世界500强公司项目经理,有10年Java开发和项目管理经验,精通Java语言,擅长Java EE、分布式、微服务、高性能服务器架构、智能报表、多线程和高并发相关的技术内容,理论与实践经验颇丰,也积极参与开源项目的开发与设计,涉及Dubbo、Jedis、Pulsar、ZooKeeper等主流开源项目。著有《Java多线程编程核心技术》《Java并发编程:核心方法与框架》《NIO与Socket编程技术指南》《Java EE核心框架实战(第2版)》等多本图书。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航