Preface?前 言
为什么要写这本书
早在几年前笔者就曾想过整理一份与Java多线程有关的稿件,因为市面上所有的Java书籍都是以一章或两章的篇幅介绍多线程技术,并没有完整地覆盖该技术的知识点,但可惜,苦于当时的时间及精力有限,一直没有达成所愿。
也许是注定的安排,我目前所在的单位是集技术与教育为一体的软件类企业。我在工作中发现很多学员在学习完JavaSE/JavaEE之后想对更深入的技术进行探索,比如在对大数据、分布式、高并发类的专题进行攻克时,立即遇到针对java.lang包中Thread类的学习,但Thread类的学习并不像JDBC那样简单,学习多线程会遇到太多的问题、弯路以及我们所谓的“坑”,为了带领学员在技术层面上进行更高的追求,我将多线程的技术点以教案的方式进行整理,在课堂上与同学们一起学习、交流,同学们反响也非常热烈。此至,若干年前的心愿终于了却,学员们也很期待这本书能出版发行,因为这样他们就有了真正的纸质参考资料,其他爱好Java多线程的朋友们也在期盼本书的出版。本书能促进他们相互交流与学习,这就是我最大的心愿。
本书秉承大道至简的主导思想,只介绍Java多线程开发中最值得关注的内容,希望能抛砖引玉,以个人的一些想法和见解,为读者拓展出更深入、更全面的思路。
本书特色
在本书写作的过程中,我尽量减少“啰嗦”的文字语言,全部用案例来讲解技术点的实现,使读者看到代码及运行结果后就可以知道此项目要解决的是什么问题,类似于网络中的博客风格,可让读者用最短的时间学完相关知识点,明白这些知识点是如何应用的,以及在使用时要避免什么。本书就像“瑞士军刀”一样,精短小,但却非常锋利,可帮读者快速学习知识并解决问题。
读者对象
本书适合所有Java程序员阅读,尤其适合以下读者:
Java多线程开发者
Java并发开发者
系统架构师
大数据开发者
其他对多线程技术感兴趣的人员
如何阅读本书
在整理本书时,我一直本着实用、易懂的原则,最终整理出7章:
第1章讲解了Java多线程的基础,包括Thread类的核心API的使用。
第2章讲解了在多线程中对并发访问的控制,主要就是synchronized的使用,由于此关键字在使用上非常灵活,所以书中用了很多案例来介绍此关键字的使用,为读者学习同步相关内容打好坚实的基础。
第3章介绍线程并不是孤独的,它们之间要通信,要交互。本章主要介绍wait()、notifyAll()和notify()方法的使用,使线程间能互相通信,合作完成任务。本章还介绍了ThreadLocal类的使用。学习完本章,读者就能在Thread多线程中进行数据的传递了。
第4章讲解了synchronized关键字,它使用起来比较麻烦,所以在Java 5中提供了Lock对象,以求能更好地实现并发访问时的同步处理,包括读写锁等相关技术点。
第5章讲解了Timer定时器类,其内部实现就是使用的多线程技术。定时器的计划任务执行是很重要的技术点,包括在Android开发时都会有深入的使用,所以会为读者详细讲解。
第6章讲解的单例模式虽然很简单,但如果遇到多线程将会变得非常麻烦,如何在多线程中解决这么棘手的问题呢?本章将全面介绍解决方案。
第7章,在整理稿件的过程中肯定会出现一些技术知识点的空缺,前面被遗漏的技术案例将在本章进行补充,以帮助读者形成完整的多线程的知识体系。编写本章的目的就是尽量使本书不存在技术空白点。
勘误和支持
本文出版自《华章出版社》 作者: 高洪岩