Java多线程与线程池技术详解

Java多线程与线程池技术详解

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

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

内容简介

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

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

作者简介

作者肖海鹏,人力资源和社会保障部高级职称;51CTO金牌讲师;具有10年大型项目经验和10年Java教学经验;曾任职E龙网架构师、TechFaith系统工程师等。在网络上推出了“Java Web应用开发技术”“SSM+SpringBoot实战技术”“多线程与线程池技术详解”等视频教程,广受网友好评。

章节目录

版权信息

作者简介

内容简介

前言

第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 分布式锁解决商品超卖

参考文献

Java多线程与线程池技术详解是2021年由清华大学出版社出版,作者肖海鹏。

得书感谢您对《Java多线程与线程池技术详解》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
Python核心技术实战详解 电子书
1.内容讲解深入。 本书对Python的核心知识进行了深入剖析,循序渐进地讲解了核心功能模块的开发技术,帮助读者快速步入Python开发高手之列。 2.提供更为广泛的解决方案。 本书深入讲解了10个不同的主题模块,每一个主题涵盖了特定应用开发领域。在书中不仅给出了案例讲解,还包含了更多的拓展知识,能够帮助读者使用Python 开发各种类型的应用程序。 3.通过网站论坛形成互帮互学的朋友圈。 为了方便给读者答疑,特提供了网站论坛等支持,并且随时在线与读者互动,让大家在互学互帮中形成一个良好的学习编程的氛围。
Windows黑客编程技术详解 电子书
庖丁解牛式剖析Windows用户层和内核层黑客技术原理。
Spark海量数据处理:技术详解与平台实战 电子书
在数字经济时代,数据是重要的资源要素;同时,新的数据又在源源不断地产生,企业面临的一个基本问题就是如何管理和利用这些数据,这对传统的数据处理方法与分析框架提出了新的诉求和挑战,也是全球业界与学界为关心的问题。为了满足大数据时代对信息的快速处理的需求,一个分布式的开源计算框架Apache Spark应运而生。经过十年的发展,Spark已经成为目前大数据处理的标杆,在整个业界得到了广泛的使用。对大数据工程师来说,用Spark构建数据管道无疑是很好的选择,而对数据科学家来说,Spark也是高效的数据探索工具。 本书基于Spark发行版2.4.4写作而成,包含大量的实例与一个完整项目,技术理论与实战相结合,层次分明,循序渐进。本书不仅介绍了如何开发Spark应用的基础内容,包括Spark架构、Spark编程、SparkSQL、Spark调优等,还探讨了Structured Streaming、Spark机器学习、Spark图挖掘、Spark深度学习、Alluxio系统等高级主题,同时完整实现了一个企业背景调查系统,借鉴了数据湖与Lambda架构的思想,涵盖了批处理、流处理应用开发,并加入了一些开源组件来满足业务需求。学习该系统可以使读者从实战中巩固所学,并将技术理论与应用实战融会贯通。 本书适合准备学习Spark的开发人员和数据分析师,以及准备将Spark应用到实际项目中的开发人员和管理人员阅读,也适合计算机相关专业的高年级本科生和研究生学习和参考,对于具有一定的Spark使用经验并想进一步提升的数据科学从业者也是很好的参考资料。
私域流量实战:IP、流量池与内容中台 电子书
本书从私域流量的战略意义、技术底层、流量导入、内容中台,以及用户运营等不同角度,解构私域流量对企业数字化转型的价值和影响。全书大部分采取案例导入的方式进行讨论,旨在让读者更清楚地了解不同私域流量背后的运营体系设计和实操方法。
Unity5.X3D游戏开发技术详解与典型案例 电子书
本书对Unity 3D集成开发环境界面、脚本的编写和众多高级特效的实现进行了详细介绍,内容深入浅出,是一本适合不同需求、不同开发水平读者的技术宝典。