同步概念: 客户端发送请求到服务端,当服务端返回响应之前,客户端都处于等待卡死状态,浏览器是做不了其他事情的。只能等服务器响应完了之后,才能做下一件事情。 例如:下面这段代码,请求服务器的时候,服务器休眠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的区别就在于:数据拷贝的时候进程是否阻塞。
|