线程的优势
发挥多处理器的强大能力
由于基本的调度单位是线程,因此如果在程序中只有一个线程,那么最多同时只能在一个处理器上运行。在双处理器系统上,单线程的程序只能使用一半的cpu资源,而在拥有100个处理器的系统上,将有99% 的资源无法使用。在GUI应用,线程可以提高用户界面的响应灵敏度。在服务器应用中,可以提升资源利用率已经系统吞吐率
异步事件的简化
烧水的时候我可以看电视
建模的简单性
编写servlet的开发人员不需要了解有多少请求在同一时刻要被处理,也不需要了解套接字的输入或者输出流是否被阻塞。当调用servlet的service方法来响应Web请求时,可以以同步方式来处理这个请求,就好 像它是一个单线程程序。深一点的理解,正因为这样的抽象,web项目又依赖于Servlet,Servlet经过处理后变成单线程的开发,所以我们大多数WEB开发都绕开了多线程,这就是从业几年来,都没有遇到多线 程的环境原因之一吧
线程带来的风险
活跃性问题:死锁,活锁,饥饿
安全性问题:竞态条件(线程共享数据带来的数据结果不可靠)
性能问题:运行时开销:上下午切换(Context Switch)、抑制某些编译器的优化