java线程与并发编程实践
线程和并发工具并非尤物,但是它们是正式应用的重要部分。本书会向你介绍java 8 update 60中线程特性以及并发工具的大部分内容。
第1章介绍了类thread和接口runnable。你会学习如何创建thread以及runnable对象,获取和设置线程状态、启动线程、中断线程,将一条线程插入另外一条线程以及触发线程睡眠。
第2章关注同步。学习后你会解决一些问题,如没有同步就无法解决的竞态条件。你也能学到如何创建同步方法、块,以及如何使用忽略互斥访问的轻量级同步。
第3章探索等待和通知的重要话题。我们首先概览了类object中支持这类概念的api,并且通过生产者、消费者应用程序来演示这一api,即一条线程产生条目而另一条线程消费之。
第4章介绍了之前3章没有覆盖的3个概念。首先,你会学习到线程组,可能想象不到它那么有用。其次,你会探索线程本地变量。最后,会学习到定时器框架,它简化了线程的定时任务。
前4章覆盖了低级的线程方法。第5章通过介绍并发工具切换至高级方法,它在简化多线程应用程序的同时也改善了性能。这一章之后还会介绍executor、callable以及future。
第6章关注同步器(高级的同步构造)。你会学到倒计时门闩(countdown latch,一条或多条线程一直等在“门口”,直到另一条线程打开了这扇门,此时其他的线程才能继续执行)、同步屏障、交换器、信号量以及phaser。
第7章介绍了锁框架,它提供了大量针对锁及条件等待的接口和类,这种方式不同于对象原生的基于锁的同步以及object的等待/通知机制。同时,它也做了一些诸如锁轮训方面的改善。
最后,第8章介绍了额外的并发工具,这部分内容在第5章到第7章没有涵盖。这章特别介绍了并发集合、原子变量、fork/join框架以及completion service。
每章都以各式各样的练习结尾,旨在帮助你掌握这些内容。除了问答题和判断题之外,你也经常遇到编程练习。附录a提供了这些问题的答案。
附录b提供了一个基于swing线程的教程。你会学到swing的单线程编程模型和大量api,这些api避免了在图形上下文中使用额外线程导致的问题。你也会探索一个幻灯片应用程序,并且用这种好玩的方式结束本书。
<a href="https://yq.aliyun.com/articles/91464">第1章 thread和runnable</a>
<a href="https://yq.aliyun.com/articles/91464">1.1 thread和runnable简介</a>
<a href="https://yq.aliyun.com/articles/91481">1.2 操作更高级的线程任务</a>
<a href="https://yq.aliyun.com/articles/91486">1.3 练习</a>
<a href="https://yq.aliyun.com/articles/91491">1.4 小结</a>
<a href="https://yq.aliyun.com/articles/91498">第2章 同步</a>
<a href="https://yq.aliyun.com/articles/91498">2.1 线程中的问题</a>
<a href="https://yq.aliyun.com/articles/91503">2.2 同步临界区的访问</a>
<a href="https://yq.aliyun.com/articles/91509">2.3 谨防活跃性问题</a>
<a href="https://yq.aliyun.com/articles/91517">2.4 volatile和final变量</a>
<a href="https://yq.aliyun.com/articles/91521">2.5 练习</a>
<a href="https://yq.aliyun.com/articles/91523">2.6 小结</a>
第3章 等待和通知
第4章 额外的线程能力
第2部分 并发工具类
第5章 并发工具类和executor框架
第6章 同步器
第7章 锁框架
第8章 额外的并发工具类
第3部分 附录
附录a 练习题答案
附录b swing中的线程