一般对于Web访问而言,处理并发请求通常存在两种方式:
一种是使用多进程手段应对客户端的并发请求:
对于多进程处理方式而言,采用的每个进程应对一个客户端请求,当一个新的请求到来的时候,服务端就启动一个进程来应答这个请求,这样的做法存在如下优缺点:
优点:每个进程是操作系统中的独立任务,不会和其他进程产生资源使用上的冲突问题;
缺点:操作系统启动一个进程需要消耗一定时间,每个进程拥有独立的地址空间,独享操作系统的资源,因而当进程数量非常的多的情况下,系统可能产生资源不足的情况而使得系统的性能大大下降。
另一种是使用多线程手段应对客户端的并发请求:
对于多线程处理方式而言,采用的每个线程应对一个客户端请求,当一个新的请求到来的时候,服务端就启动一个新的进线程来应答这个请求,这样的做法存在如下优缺点:
优点:启动线程速度很快,线程采用的是共享进程资源的办法,因此启动大量的线程不会造成系统资源的严重短缺,有利于系统承受高负载;
缺点:因为线程共享一个进程的地址空间,因而线程间的共享数据访问就成了不安全的因素,需要进行线程安全控制,线程的安全处理会影响到程序处理的速度。
Java的Web处理方式就是采用多线程处理并发请求的工作方式。