本书第 1 版在出版后获得了广大 Java 程序员与学习者的关注,技术论坛、博客、公众号等平台大量涌现出针对 Java 多线程技术的讨论与分享。能为国内 IT 知识的建设贡献微薄之力是让我最欣慰的。
目录
- 前言
- 第 2 版与第 1 版的区别
- 本书特色
- 读者对象
- 如何阅读本书
- 交流和支持
- 致谢
- 第 1 章 Java 多线程技能
- 1.1 进程和多线程概述
- 1.2 使用多线程
- 1.2.10 留意 i--与 System.out.println() 出现的非线程安全问题
- 1.3 currentThread() 方法
- 1.4 isAlive() 方法
- 1.5 sleep(long millis)方法
- 1.6 sleep(long millis,int nanos)方法
- 1.7 StackTraceElement[]getStackTrace() 方法
- 1.8 static void dumpStack() 方法
- 1.9 static Map<Thread,StackTraceElement[]>getAllStackTraces() 方法
- 1.10 getId() 方法
- 1.11 停止线程
- 1.12 暂停线程
- 1.13 yield() 方法
- 1.14 线程的优先级
- 1.15 守护线程
- 1.16 本章小结
- 第 2 章 对象及变量的并发访问
- 2.1 synchronized 同步方法
- 2.2 synchronized 同步语句块
- 2.2.1 synchronized 方法的弊端
- 2.2.2 synchronized 同步代码块的使用
- 2.2.3 用同步代码块解决同步方法的弊端
- 2.2.4 一半异步,一半同步
- 2.2.5 synchronized 代码块间的同步性
- 2.2.6 println() 方法也是同步的
- 2.2.7 验证同步 synchronized(this)代码块是锁定当前对象的
- 2.2.8 将任意对象作为锁
- 2.2.9 多个锁就是异步执行
- 2.2.10 验证方法被调用是随机的
- 2.2.11 不同步导致的逻辑错误及其解决方法
- 2.2.12 细化验证 3 个结论
- 2.2.13 类 Class 的单例性
- 2.2.14 静态同步 synchronized 方法与 synchronized(class)代码块
- 2.2.15 同步 syn static 方法可以对类的所有对象实例起作用
- 2.2.16 同步 syn(class)代码块可以对类的所有对象实例起作用
- 2.2.17 String 常量池特性与同步相关的问题与解决方案
- 2.2.18 同步 synchronized 方法无限等待问题与解决方案
- 2.2.19 多线程的死锁
- 2.2.20 内置类与静态内置类
- 2.2.21 内置类与同步:实验 1
- 2.2.22 内置类与同步:实验 2
- 2.2.23 锁对象改变导致异步执行
- 2.2.24 锁对象不改变依然同步执行
- 2.2.25 同步写法案例比较
- 2.3 volatile 关键字
- 2.4 本章小结
- 第 3 章 线程间通信
- 3.1 wait/notify 机制
- 3.1.1 不使用 wait/notify 机制实现线程间通信
- 3.1.2 wait/notify 机制
- 3.1.3 wait/notify 机制的原理
- 3.1.4 wait() 方法的基本使用
- 3.1.5 完整实现 wait/notify 机制
- 3.1.6 使用 wait/notify 机制实现 list.size() 等于 5 时的线程销毁
- 3.1.7 对业务代码进行封装
- 3.1.8 线程状态的切换
- 3.1.9 wait() 方法:立即释放锁
- 3.1.10 sleep() 方法:不释放锁
- 3.1.11 notify() 方法:不立即释放锁
- 3.1.12 interrupt() 方法遇到 wait() 方法
- 3.1.13 notify() 方法:只通知一个线程
- 3.1.14 notifyAll() 方法:通知所有线程
- 3.1.15 wait(long)方法的基本使用
- 3.1.16 wait(long)方法自动向下运行需要重新持有锁
- 3.1.17 通知过早问题与解决方法
- 3.1.18 wait 条件发生变化与使用 while 的必要性
- 3.1.19 生产者/消费者模式的实现
- 3.1.20 通过管道进行线程间通信 - 字节流
- 3.1.21 通过管道进行线程间通信 - 字符流
- 3.1.22 实现 wait/notify 的交叉备份
- 3.2 join() 方法的使用
- 3.3 类 ThreadLocal 的使用
- 3.4 类 InheritableThreadLocal 的使用
- 3.5 本章小结
- 3.1 wait/notify 机制
- 第 4 章 Lock 对象的使用
- 4.1 使用 ReentrantLock 类
- 4.1.1 使用 ReentrantLock 实现同步
- 4.1.2 验证多代码块间的同步性
- 4.1.3 await() 方法的错误用法与更正
- 4.1.4 使用 await() 和 signal() 实现 wait/notify 机制
- 4.1.5 await() 方法暂停线程运行的原理
- 4.1.6 通知部分线程 - 错误用法
- 4.1.7 通知部分线程 - 正确用法
- 4.1.8 实现生产者/消费者模式一对一交替输出
- 4.1.9 实现生产者/消费者模式多对多交替输出
- 4.1.10 公平锁与非公平锁
- 4.1.11 public int getHoldCount() 方法的使用
- 4.1.12 public final int getQueueLength() 方法的使用
- 4.1.13 public int getWaitQueueLength(Condition condition)方法的使用
- 4.1.14 public final boolean hasQueuedThread(Thread thread)方法的使用
- 4.1.15 public final boolean hasQueued-Threads() 方法的使用
- 4.1.16 public boolean hasWaiters(Condition condition)方法的使用
- 4.1.17 public final boolean isFair() 方法的使用
- 4.1.18 public boolean isHeldByCurrentThread() 方法的使用
- 4.1.19 public boolean isLocked() 方法的使用
- 4.1.20 public void lockInterruptibly() 方法的使用
- 4.1.21 public boolean tryLock() 方法的使用
- 4.1.22 public boolean tryLock(long timeout,TimeUnit unit)方法的使用
- 4.1.23 public boolean await(long time,TimeUnit unit)方法的使用
- 4.1.24 public long awaitNanos(long nanosTimeout)方法的使用
- 4.1.25 public boolean awaitUntil(Date deadline)方法的使用
- 4.1.26 public void awaitUninterruptibly() 方法的使用
- 4.1.27 实现线程按顺序执行业务
- 4.2 使用 ReentrantReadWriteLock 类
- 4.3 本章小结
- 4.1 使用 ReentrantLock 类
- 第 5 章 定时器 Timer
- 第 6 章 单例模式与多线程
- 第 7 章 拾遗增补
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论