内容简介
《Java多线程与线程池技术详解》、系统地讲解了多线程和线程池技术。 《Java多线程与线程池技术详解》共分为10章,第1~3章为基本的多线程技术基础含创建线程、线程状态转换、线程间同步等内容。第4~8章为线程池技术含自定义线程池、通过Executors工具类创建线程池、线程池的底层阻塞队列结构、重入锁等内容。第9章和第10章为多线程技术的应用部分含基于Tomcat的线程池应用、基于ThreadLocal的数据库连接管理、生成的订单号等内容。 《Java多线程与线程池技术详解》提供了大量应用实例,每章后面均附有 《Java多线程与线程池技术详解》适合作为高等院校计算机、软件工程专业高年级本科生、研究生的教材,同时可供有编程经验的软件开发人员、广大科技工作者和研究人员行多线程编程时参考使用。
目录
第1章 多线程基础 11.1 程与线程 11.1.1 操作系统程 11.1.2 线程程的关系 21.2 多线程启动 31.2.1 线程标识 51.2.2 Thread与Runnable 61.2.3 run()与start() 71.2.4 Thread源码分析 91.3 线程状态 111.3.1 NEW状态 111.3.2 RUNNABLE状态 121.3.3 BLOCKED状态 131.3.4 WAITING状态 141.3.5 TIMED_WAITING状态 191.3.6 WAITING与BLOCKED的区别 211.3.7 TERMINATED状态 211.3.8 线程状态转换 221.4 sleep()与yield() 221.4.1 线程休眠sleep() 221.4.2 线程让步yield() 241.5 线程优先级 251.5.1 线程优先级与资源竞争 261.5.2 案例:大型浮点运算测试 261.5.3 案例:多线程售票 281.6 守护线程 301.6.1 守护线程的概念 301.6.2 案例:清道夫与工作者 311.7 本章34第2章 线程与共享资源竞争 372.ynchronized同步介绍 372.2 synchronized同步方法 382.2.1 同步方法调用流程 412.2.2 同步方法之间的互斥 412.2.3 同步方法与非同步方法 442.3 synchronized同步静态方法 462.3.1 单例高并发问题 462.3.2 类锁与对象锁 472.3.3 静态同步方法之间互斥 472.3.4 静态同步方法与静态非同步方法 492.4 synchronized同步代码块 502.4.1 锁当前对象 502.4.2 锁其他对象 512.4.3 锁Class 512.5 项目案例:火车售票 522.5.1 共享任务模式 522.5.2 多任务模式 552.5.3 共享车票资源 562.6 项目案例:家庭消费 592.7 项目案例:别墅Party 632.7.1 无锁模式 632.7.2 单锁模式 662.7.3 双锁模式 672.8 K常见类的线程 692.8.1 集合ArrayList与Vector 692.8.2 StringBuffer与StringBuilder 712.8.3 HashMap与ConcurrentHashMap 722.9 本章73第3章 多线程通信 763.1 wait()与notify() 763.1.1 阻塞当前线程 763.1.2 案例分析:厨师与侍者1 783.1.3 案例分析:厨师与侍者2 813.1.4 案例分析:两个线程交替输出信息 853.2 join线程排队 873.2.1 加入者与休眠者 873.2.2 案例:紧急任务处理 893.2.3 join限时阻塞 913.3 线程中断 933.3.1 中断运行态线程 933.3.2 中断阻塞态线程 953.3.3 如何停止线程 973.4 CountDownLatch计数器 983.5 CyclicBarrier屏障 1003.5.1 案例:矩阵分行处理 1013.5.2 案例:赛马游戏 1033.6 Exchanger 1043.7 Semaphore信号灯 1073.8 死锁 1083.8.1 案例:银行转账引发死锁 1093.8.2 案例:哲学家餐死锁 1123.9 本章115第4章 线程池入门 1174.1 ThreadPoolExecutor 1174.1.1 创建线程池 1184.1.2 关闭线程池 1214.2 Executor接口 1234.3 ExecutorService接口 1244.3.1 Callable返回任务执行结果 1254.3.2 shutdown与shutdownNow 1274.4 Executors工具箱 1274.4.1 newCachedThreadPool 1284.4.2 newFixedThreadPool 1334.4.3 newSingleThreadExecutor 1374.4.4 newScheduledThreadPool 1414.4.5 newWorkStealingPool 1434.5 线程工厂与线程组 1514.5.1 线程组 1514.5.2 线程与线程组 1524.5.3 线程 1554.5.4 默认线程工厂实现 1564.5.5 线程池与线程工厂 1574.6 线程池异常处理 1584.6.1 异常捕获 1584.6.2 UncaughtExceptionHandler处理异常 1584.6.3 Future处理异常 1614.7 本章163第5章 线程池与锁 1655.1 重入锁ReentrantLock 1655.1.1 重入锁 1665.1.2 互斥锁 1675.1.3 ReentrantLock与synchronized 1695.1.4 尝试加锁并限时等待 1715.2 重入锁与Condition 1735.2.1 案例分析:厨师与侍者 1765.2.2 案例分析:缓冲区队列 1785.3 读锁与写锁 1815.3.1 案例:并发读写集合 1825.3.2 案例:Map并发控制 1935.3.3 数据库事务与锁 1975.4 锁与非锁 1985.5 本章201第6章 线程池与阻塞队列 2026.1 Queue接口 2026.2 BloQueue接口 2026.3 BloQueue实现类 2036.4 linkedBloQueue与ArrayBloQueue 2036.4.1 阻塞队列的单锁与双锁 2046.4.2 ArrayBloQueue并发分析 2056.4.3 linkedBloQueue并发分析 2066.4.4 案例:12306抢票 2086.5 生产者与消费者模式 2106.5.1 基于管道发送与接收消息 2116.5.2 基于阻塞队列发送与接收消息 2136.5.3 案例:医院挂号 2136.6 SynchronousQueue 2176.6.1 同步队列应用场景 2176.6.2 案例:Web服务器处理并发请求 2186.7 延迟阻塞队列 2206.7.1 案例:元素延迟出队 2216.7.2 项目案例:Web服务器会话管理 2226.8 PriorityBloQueue 226案例:按优先级执行任务 2266.9 linkedTransferQueue 2286.10 linkedBloDeque 2296.11 本章229第7章 线程池与AQS 2317.1 acquire与release 2317.2 能目标 2327.3 设计与实现 2337.3.1 同步状态 2337.3.2 阻塞 2447.3.3 排队 2467.3.4 条件队列 2487.4 使用AQS 2497.4.1 控制 2507.4.2 同步器 2517.5 AQS能 2527.5.1 过载 2537.5.2 吞吐量 2547.6 本章255第8章 结束线程与线程池任务 2578.top()与destroy() 2578.2 状态值结束线程 2588.3 shutdown()与shutdownNow() 2588.4 线程休眠 2588.5 线程中断 2588.6 Future与FutureTask 2588.6.1 取消任务 2598.6.2 任务超时结束 2638.7 项目案例:所有线程池任务暂停与重启 2648.8 本章267第9章 Tomcat线程池技术 2689.1 自定义ThreadPoolExecutor 2689.2 Tomcat任务队列 2709.3 Tomcat任务线程 2709.4 Tomcat任务线程工厂 2719.5 Tomcat连接器与线程池 2729.6 创建Tomcat线程池 2749.7 Web服务器异步环境 275案例:AsyncContext调用业务方法 2769.8 Web服务器NIO 278案例:服务器NIO处理请求 2799.9 本章281第10章 并发编程应用 28310.1 JVM与多线程 28310.2 Servlet与多线程 28410.3 懒汉与恶汉模式 28610.4 数据库Connection与多线程 28810.4.1 ThreadLocal与线程私有数据 28910.4.2 ThreadLocal存储数据库Connection 29110.4.3 ThreadLocal实现Connection per logic模式 29310.4.4 ThreadLocal实现Connection per request模式 29410.5 高并发网站的PageView统计 29510.6 生成的订单号 29610.7 浏览器并发请求限制 29810.8 NIO与多路复用 30110.9 远程异步访问 30210.10 防止缓存雪崩的DCL机制 30510.11 分布式锁解决商品超卖 309参考文献 314


