同步概念:
客户端发送请求到服务端,当服务端返回响应之前,客户端都处于等待卡死状态,浏览器是做不了其他事情的。只能等服务器响应完了之后,才能做下一件事情。
例如:下面这段代码,请求服务器的时候,服务器休眠5秒,这个时候,在浏览器点击了同步之后,异步的按钮是按不了的。可是,如果点击的是异步的话,两个按钮都可以按。
<
input
type=
"button"
value=
"
同步
"
id=
"bt1" />
<
input
type=
"button"
value=
"
异步
"
id=
"bt2" />
$(
"#bt1").click(
function () {
$.
ajax({
type:
"post",
url:
"test",
cache:
false,
async:
false,
success:
function(data){
alert(data);
}
});
$(
"#bt2").click(
function () {
$.
ajax({
type:
"post",
url:
"test",
cache:
false,
async:
true,
success:
function(data){
alert(data);
}
});
});
});
@WebServlet(
"/test")
public class TestServlet
extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try {
Thread.
sleep(5000);
resp.getWriter().write(
"test");
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}
|
异步概念:
客户端发送请求到服务端,无论服务端是否返回响应,客户端都可以在该页面中随意做其他事情,不会被卡死,提高了用户的体验。
1. 同步,就是调用一个功能,该功能没有结束前,就等待程序返回结果后再继续能够运行
2. 异步,就是调用一个功能,不需要知道该功能结果,程序也能够继续运行,如果有返回消息,再继续执行返回的消息。
同步IO和异步IO的区别就在于:数据拷贝的时候进程是否阻塞。
|