阻塞模式
客户端向服务器发出请求后,客户端会一直处于等待状态(不会再做其他事情),直到服务器端返回结果或者网络出现问题。
服务器端同样如此,当在处理某个客户端A发来的请求时,另一个客户端B发来的请求会等待,直到服务器端的处理线程完成上一个请求的处理。
Java对阻塞模式的支持,就是由java.net包中的Socket套接字功能完成的。Socket套接字是TCP/UDP等传输层协议在高级编程语言中的具体体现。例如客户端使用TCP协议连接这台服务器的时候,当TCP三次握手成功后,应用程序就会创建一个Socket套接字对象(注意,这时还没有进行数据内容的传输),当这个TCP链接出现数据传输时,Socket套接字就会把数据传输的表现告诉程序员。
传统的阻塞模型在通信方式上存在几个问题:
1、同一时间,服务器只能接收来自于客户端A的请求信息;虽然客户端A个客户端B的请求是同时进行的,但客户端B发送的请求信息也只能等到服务器接收完客户端A的请求数据后,才能被接收。
2、由于服务器一次只能处理一个客户端请求,当处理完成并返回后(或者异常时),才能进行第二次请求的