《Java并发编程实战》深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考手册。书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及验证线程安全的规则,如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性能和可伸缩性等内容,最后介绍了一些高级主题,如显式锁、原子变量、非阻塞算法以及如何开发自定义的同步工具类。
编写正确的程序很难,而编写正确的并发程序则难上加难。与串行程序相比,在并发程序中存在更多内容出错的地方。那为什么还要编写多线程的的程序呢?
资源利用率。在某些情况下,程序必须等待系统来实现多个程序的同时执行,例如输入操作或者输出操作等,而在等待时程序无法执行其他任何工作。因此,如果在等待的同事可以运行另一个程序,那么无疑将提高资源的利用率。
公平性。不同的用户和程序对于计算机上的资源有着同等的使用权。一种搞笑的运行方式是通过粗粒度的时间分片使这些用户和程序共享计算机资源,而不是由一个程序从头运行到尾,然后再启动下一个程序。
便利性。通常来说,在计算多个任务时,应该编写多个程序,每个程序执行一个任务并在必要时相互通信,这比只编写一个程序来计算所有任务更容易实现。
一.线程的优势
1.发挥多处理器的强大能力。
2.建模的简单性。
3.异步事件的简化处理。
4.响应更灵敏的用户界面
二.线程带来的风险
1.安全性问题。线程安全性可能是非常复杂的,在没有充足同步的情况下,多个线程中的操作执行的顺序是不可预测的,甚至会产生奇怪的结果。
2.活跃性问题。安全性的含义是”永远不发生糟糕的事情“,而活跃性则关注于另一个目标,即”某件正确的事情最终会发生“。当某个操作无法继续执行下去时,就会发生活跃性问题,例如死锁。
3.性能问题。在设计良好的并发应用程序中,线程能提升程序的性能,但无论如何,线程总会带来某种程度的运行开销。
《Java并发变成实践》读书笔记---第一章 简介,码迷,mamicode.com
原文地址:http://blog.csdn.net/jaynol/article/details/24691133