@7788999z
2014-05-05T08:39:07.000000Z
字数 544
阅读 599
Java并发编程实战
1.1 并发简史
资源利用率:无需等待
公平性:时间分片执行
便利性:
进程:
线程:
1.2 线程的优势
串行编程模型:每次只做一件事,做完之后再做另一件。
线程能将大部分的异步工作流转换成串行工作流。
1.2.1 发挥多处理器的强大能力
在双核处理器系统上,单线程程序的cpu利用率为50%,在100核系统上,利用率为1%!
多线程程序可以同时在多个处理器上执行,可以通过提高处理器资源的利用率来提升系统吞吐率。
多线程程序也有助于在单处理器上获得更高的吞吐率。譬如一个I/O线程正处于等待状态,这时就可以运行另一个线程。
1.2.2 建模的简单性
将复杂的不同类型的任务分解为各种同一类型的小任务。
将程序的执行逻辑与调度机制的细节、交替执行的操作、异步I/O以及资源等待等问题分离开来。
通过使用线程,可以将复杂并且异步的的工作流进一步分解为一组简单并且同步的工作流,每个工作流在一个单独的线程中运行,并在特定的同步位置进行交互。
譬如Servlet、RMI
1.2.3 异步事件的简化处理
1.2.4 响应更灵敏的用户界面
1.3 线程带来的风险
1.3.1 安全性问题
1.3.2 活跃性的问题
死锁、饥饿、活锁
1.3.3 性能问题
挂起活跃线程并转而运行另一个线程时,会频繁地出现上下文切换操作
1.4 线程无处不在