展开全部

主编推荐语

本书全面、系统地讲解了多线程和线程池技术。

内容简介

全书共分为10章,第1~3章为基本的多线程技术基础,包含创建线程、线程状态转换、线程间同步等内容。第4~8章为线程池技术,包含自定义线程池、通过Executors工具类创建线程池、线程池的底层阻塞队列结构、重入锁等内容。第9章和第10章为多线程技术的应用部分,包含基于Tomcat的线程池应用、基于ThreadLocal的数据库连接管理、生成唯一的订单号等内容。

全书提供了大量应用实例,每章后面均附有习题。本书适合作为高等院校计算机、软件工程专业高年级本科生、研究生的教材,同时可供有一定编程经验的软件开发人员、广大科技工作者和研究人员在进行多线程编程时参考使用。

目录

  • 版权信息
  • 作者简介
  • 内容简介
  • 前言
  • 第1章 多线程基础
  • 1.1 进程与线程
  • 1.1.1 操作系统与进程
  • 1.1.2 线程与进程的关系
  • 1.2 多线程启动
  • 1.2.1 线程标识
  • 1.2.2 Thread与Runnable
  • 1.2.3 run()与start()
  • 1.2.4 Thread源码分析
  • 1.3 线程状态
  • 1.3.1 NEW状态
  • 1.3.2 RUNNABLE状态
  • 1.3.3 BLOCKED状态
  • 1.3.4 WAITING状态
  • 1.3.5 TIMED_WAITING状态
  • 1.3.6 WAITING与BLOCKED的区别
  • 1.3.7 TERMINATED状态
  • 1.3.8 线程状态转换
  • 1.4 sleep()与yield()
  • 1.4.1 线程休眠sleep()
  • 1.4.2 线程让步yield()
  • 1.5 线程优先级
  • 1.5.1 线程优先级与资源竞争
  • 1.5.2 案例:大型浮点运算测试
  • 1.5.3 案例:多线程售票
  • 1.6 守护线程
  • 1.6.1 守护线程的概念
  • 1.6.2 案例:清道夫与工作者
  • 1.7 本章习题
  • 第2章 线程安全与共享资源竞争
  • 2.1 synchronized同步介绍
  • 2.2 synchronized同步方法
  • 2.2.1 同步方法调用流程
  • 2.2.2 同步方法之间的互斥
  • 2.2.3 同步方法与非同步方法
  • 2.3 synchronized同步静态方法
  • 2.3.1 单例高并发问题
  • 2.3.2 类锁与对象锁
  • 2.3.3 静态同步方法之间互斥
  • 2.3.4 静态同步方法与静态非同步方法
  • 2.4 synchronized同步代码块
  • 2.4.1 锁当前对象
  • 2.4.2 锁其他对象
  • 2.4.3 锁Class
  • 2.5 项目案例:火车售票
  • 2.5.1 共享任务模式
  • 2.5.2 多任务模式
  • 2.5.3 共享车票资源
  • 2.6 项目案例:家庭消费
  • 2.7 项目案例:别墅Party
  • 2.7.1 无锁模式
  • 2.7.2 单锁模式
  • 2.7.3 双锁模式
  • 2.8 JDK常见类的线程安全性
  • 2.8.1 集合ArrayList与Vector
  • 2.8.2 StringBuffer与StringBuilder
  • 2.8.3 HashMap与ConcurrentHashMap
  • 2.9 本章习题
  • 第3章 多线程通信
  • 3.1 wait()与notify()
  • 3.1.1 阻塞当前线程
  • 3.1.2 案例分析:厨师与侍者1
  • 3.1.3 案例分析:厨师与侍者2
  • 3.1.4 案例分析:两个线程交替输出信息
  • 3.2 join线程排队
  • 3.2.1 加入者与休眠者
  • 3.2.2 案例:紧急任务处理
  • 3.2.3 join限时阻塞
  • 3.3 线程中断
  • 3.3.1 中断运行态线程
  • 3.3.2 中断阻塞态线程
  • 3.3.3 如何停止线程
  • 3.4 CountDownLatch计数器
  • 3.5 CyclicBarrier屏障
  • 3.5.1 案例:矩阵分行处理
  • 3.5.2 案例:赛马游戏
  • 3.6 Exchanger
  • 3.7 Semaphore信号灯
  • 3.8 死锁
  • 3.8.1 案例:银行转账引发死锁
  • 3.8.2 案例:哲学家就餐死锁
  • 3.9 本章习题
  • 第4章 线程池入门
  • 4.1 ThreadPoolExecutor
  • 4.1.1 创建线程池
  • 4.1.2 关闭线程池
  • 4.2 Executor接口
  • 4.3 ExecutorService接口
  • 4.3.1 Callable返回任务执行结果
  • 4.3.2 shutdown与shutdownNow
  • 4.4 Executors工具箱
  • 4.4.1 newCachedThreadPool
  • 4.4.2 newFixedThreadPool
  • 4.4.3 newSingleThreadExecutor
  • 4.4.4 newScheduledThreadPool
  • 4.4.5 newWorkStealingPool
  • 4.5 线程工厂与线程组
  • 4.5.1 线程组
  • 4.5.2 线程与线程组
  • 4.5.3 线程工厂接口
  • 4.5.4 默认线程工厂实现
  • 4.5.5 线程池与线程工厂
  • 4.6 线程池异常处理
  • 4.6.1 异常捕获
  • 4.6.2 UncaughtExceptionHandler处理异常
  • 4.6.3 Future处理异常
  • 4.7 本章习题
  • 第5章 线程池与锁
  • 5.1 重入锁ReentrantLock
  • 5.1.1 重入锁
  • 5.1.2 互斥锁
  • 5.1.3 ReentrantLock与synchronized
  • 5.1.4 尝试加锁并限时等待
  • 5.2 重入锁与Condition
  • 5.2.1 案例分析:厨师与侍者
  • 5.2.2 案例分析:缓冲区队列
  • 5.3 读锁与写锁
  • 5.3.1 案例:并发读写集合
  • 5.3.2 案例:Map并发控制
  • 5.3.3 数据库事务与锁
  • 5.4 公平锁与非公平锁
  • 5.5 本章习题
  • 第6章 线程池与阻塞队列
  • 6.1 Queue接口
  • 6.2 BlockingQueue接口
  • 6.3 BlockingQueue实现类
  • 6.4 LinkedBlockingQueue与ArrayBlockingQueue
  • 6.4.1 阻塞队列的单锁与双锁
  • 6.4.2 ArrayBlockingQueue并发分析
  • 6.4.3 LinkedBlockingQueue并发分析
  • 6.4.4 案例:12306抢票
  • 6.5 生产者与消费者模式
  • 6.5.1 基于管道发送与接收消息
  • 6.5.2 基于阻塞队列发送与接收消息
  • 6.5.3 案例:医院挂号
  • 6.6 SynchronousQueue
  • 6.6.1 同步队列应用场景
  • 6.6.2 案例:Web服务器处理并发请求
  • 6.7 延迟阻塞队列
  • 6.7.1 案例:元素延迟出队
  • 6.7.2 项目案例:Web服务器会话管理
  • 6.8 PriorityBlockingQueue
  • 案例:按优先级执行任务
  • 6.9 LinkedTransferQueue
  • 6.10 LinkedBlockingDeque
  • 6.11 本章习题
  • 第7章 线程池与AQS
  • 7.1 acquire与release
  • 7.2 性能目标
  • 7.3 设计与实现
  • 7.3.1 同步状态
  • 7.3.2 阻塞
  • 7.3.3 排队
  • 7.3.4 条件队列
  • 7.4 使用AQS
  • 7.4.1 控制公平性
  • 7.4.2 同步器
  • 7.5 AQS性能
  • 7.5.1 过载
  • 7.5.2 吞吐量
  • 7.6 本章习题
  • 第8章 结束线程与线程池任务
  • 8.1 stop()与destroy()
  • 8.2 状态值结束线程
  • 8.3 shutdown()与shutdownNow()
  • 8.4 线程休眠
  • 8.5 线程中断
  • 8.6 Future与FutureTask
  • 8.6.1 取消任务
  • 8.6.2 任务超时结束
  • 8.7 项目案例:所有线程池任务暂停与重启
  • 8.8 本章习题
  • 第9章 Tomcat线程池技术
  • 9.1 自定义ThreadPoolExecutor
  • 9.2 Tomcat任务队列
  • 9.3 Tomcat任务线程
  • 9.4 Tomcat任务线程工厂
  • 9.5 Tomcat连接器与线程池
  • 9.6 创建Tomcat线程池
  • 9.7 Web服务器异步环境
  • 案例:AsyncContext调用业务方法
  • 9.8 Web服务器NIO
  • 案例:服务器NIO处理请求
  • 9.9 本章习题
  • 第10章 并发编程应用
  • 10.1 JVM与多线程
  • 10.2 Servlet与多线程
  • 10.3 懒汉与恶汉模式
  • 10.4 数据库Connection与多线程
  • 10.4.1 ThreadLocal与线程私有数据
  • 10.4.2 ThreadLocal存储数据库Connection
  • 10.4.3 ThreadLocal实现Connection per logic模式
  • 10.4.4 ThreadLocal实现Connection per request模式
  • 10.5 高并发网站的PageView统计
  • 10.6 生成唯一的订单号
  • 10.7 浏览器并发请求限制
  • 10.8 NIO与多路复用
  • 10.9 远程异步访问
  • 10.10 防止缓存雪崩的DCL机制
  • 10.11 分布式锁解决商品超卖
  • 参考文献
展开全部

评分及书评

5.0
3个评分
  • 用户头像
    给这本书评了
    5.0

    本书全面、系统地讲解了多线程和线程池技术。全书共分为 10 章,第 1~3 章为基本的多线程技术基础,包含创建线程、线程状态转换、线程间同步等内容。第 4~8 章为线程池技术,包含自定义线程池、通过 Executors 工具类创建线程池、线程池的底层阻塞队列结构、重入锁等内容。第 9 章和第 10 章为多线程技术的应用部分,包含基于 Tomcat 的线程池应用、基于 ThreadLocal 的数据库连接管理、生成唯一的订单号等内容。

      转发
      评论

    出版方

    清华大学出版社

    清华大学出版社成立于1980年6月,是由教育部主管、清华大学主办的综合出版单位。植根于“清华”这座久负盛名的高等学府,秉承清华人“自强不息,厚德载物”的人文精神,清华大学出版社在短短二十多年的时间里,迅速成长起来。清华大学出版社始终坚持弘扬科技文化产业、服务科教兴国战略的出版方向,把出版高等学校教学用书和科技图书作为主要任务,并为促进学术交流、繁荣出版事业设立了多项出版基金,逐渐形成了以出版高水平的教材和学术专著为主的鲜明特色,在教育出版领域树立了强势品牌。