6.1 在线程中执行任务
在理想情况下,各个任务之间时相互独立的:任务并不依赖于其他任务的状态、结果、边界效应。
应用程序性希望支持尽可能多的用户,从而降低每个用户的服务成本,而用户则希望获得尽快的响应。
6.1.1串行的执行任务
6.1.2 显示地为任务创建线程
只要请求到达的速率不超出服务器的处理能力。
6.1.3 无限制创建线程的不足
线程生命周期的开销非常高
资源消耗
稳定性:线程数的限制值随平台不同,并受JVM启动参数、Thread构造函数中栈大小、以及地层OS对线程的限制等。会抛出OOM等异常。
6.2 Excutor框架
任务是一组逻辑工作单元,而线程则是使任务异步执行的机制。
Excutor基于生产者-消费者,提供了一种标准方法将任务的提交过程与执行过程解耦开,并用Runnable表示任务,还提供了对生命周期的支持、统计信息、性能监视等。
6.2.1 例:基于Executor的web服务器
6.2.2 执行策略
使用Executor来代替Thread
6.2.3 线程池
指管理一组同构工作线程的资源池。
可以避免线程创建和销毁过程中有巨大的开销;请求到达时工作线程已经存在,因此不会由于等待创建线程而延迟;适当调整线程池的大小,可以创建足够多的的线程以便使处理气保持忙碌状态,同时还可以防止多线程相