同步和异步:
例子:
客户端发送一个需要服务端处理很长的请求,一直在那等是同步,不等等待返回结果是异步
针对于客户端请求的连接
堵塞和非堵塞:
tomcat收到一个请求,这个请求要去从数据库拿数据
堵塞是一直等待数据库数据获得
非堵塞是处理别的去了,数据库请求处理完在调用回调函数处理
针对服务端请求的线程来说
同步:客户端或者请求的连接发送给服务端之后,需要一直等待服务端处理完。
异步:客户端或者请求的连接发送给服务端之后,不需要等待结果,可以直接返回,做其他操作,当服务端完成后,通过消息回写返回给客户端
阻塞:请求线程发送请求给处理线程后一直处于等待状态,不可以处理其他请求。
非阻塞:请求线程发送请求给处理线程后释放资源池,可以去处理其他请求,但是请求线程需要每隔一段时间轮训一下处理线程是否完成处理。若完成则返回结果到用户端。
客户端:
前端发送请求
服务端(后端):
请求线程:tomcat请求
处理线程:mysql去处理数据
同步堵塞:客户端发送请求一直等待,同时请求线程也一直等待
同步非堵塞:客户端发送请求一直等待,同时请求线程不需要等待,但是时不时来问下结果
异步堵塞:客户端发送请求后处理别的事情,请求线程一直等待
异步非堵塞:客户端和请求线程都不等待