黑马程序员技术交流社区

标题: 同步IO与异步IO的区别 [打印本页]

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


图片1.png (45.58 KB, 下载次数: 55)

图片1.png





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2